diff options
| author | LexManos <LexManos@gmail.com> | 2021-01-17 17:35:01 -0800 |
|---|---|---|
| committer | LexManos <LexManos@gmail.com> | 2021-01-17 17:40:39 -0800 |
| commit | 4089917696fffbd4b818fb90958d20f0714f93fb (patch) | |
| tree | 1f5de4972d9afe0328d7d0ce929aac06c3bca15e /src/shared/java/com/amadornes/artifactural/base/cache | |
| parent | 631cd05e726092c51e95b52bb8a8bb6a2ae2cc42 (diff) | |
| download | Artifactural-4089917696fffbd4b818fb90958d20f0714f93fb.tar.gz Artifactural-4089917696fffbd4b818fb90958d20f0714f93fb.tar.bz2 Artifactural-4089917696fffbd4b818fb90958d20f0714f93fb.zip | |
Move to net.minecraftforge package, and update license headers.
Diffstat (limited to 'src/shared/java/com/amadornes/artifactural/base/cache')
| -rw-r--r-- | src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java | 129 | ||||
| -rw-r--r-- | src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java | 69 |
2 files changed, 0 insertions, 198 deletions
diff --git a/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java b/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java deleted file mode 100644 index 08a2840..0000000 --- a/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Artifactural - * Copyright (c) 2018. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package com.amadornes.artifactural.base.cache; - -import com.amadornes.artifactural.api.artifact.Artifact; -import com.amadornes.artifactural.api.artifact.ArtifactIdentifier; -import com.amadornes.artifactural.api.artifact.ArtifactMetadata; -import com.amadornes.artifactural.api.artifact.ArtifactType; -import com.amadornes.artifactural.api.artifact.MissingArtifactException; -import com.amadornes.artifactural.api.cache.ArtifactCache; -import com.amadornes.artifactural.api.transform.ArtifactTransformer; -import com.amadornes.artifactural.base.artifact.StreamableArtifact; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -public abstract class ArtifactCacheBase implements ArtifactCache { - - Artifact.Cached doStore(File path, Artifact artifact) { - return wrap( - StreamableArtifact.ofStreamable( - artifact.getIdentifier(), - artifact.getType(), - () -> stream(path, artifact) - ).withMetadata(artifact.getMetadata()), - path - ); - } - - private InputStream stream(File path, Artifact artifact) throws IOException { - if (!path.exists()) { - path.getParentFile().mkdirs(); - path.createNewFile(); - FileOutputStream fos = new FileOutputStream(path); - InputStream is = artifact.openStream(); - int read; - byte[] bytes = new byte[256]; - while ((read = is.read(bytes)) > 0) { - fos.write(bytes, 0, read); - } - fos.close(); - is.close(); - } - return new FileInputStream(path); - } - - public static Artifact.Cached wrap(Artifact artifact, File file) { - return new Artifact.Cached() { - - @Override - public ArtifactIdentifier getIdentifier() { - return artifact.getIdentifier(); - } - - @Override - public ArtifactMetadata getMetadata() { - return artifact.getMetadata(); - } - - @Override - public ArtifactType getType() { - return artifact.getType(); - } - - @Override - public Artifact withMetadata(ArtifactMetadata metadata) { - return artifact.withMetadata(metadata); - } - - @Override - public Artifact apply(ArtifactTransformer transformer) { - return artifact.apply(transformer); - } - - @Override - public Artifact.Cached cache(ArtifactCache cache) { - return artifact.cache(cache); - } - - @Override - public boolean isPresent() { - return artifact.isPresent(); - } - - @Override - public InputStream openStream() throws IOException, MissingArtifactException { - return artifact.openStream(); - } - - @Override - public File asFile() throws IOException, MissingArtifactException { - if(!file.exists()) { - artifact.openStream().close(); - } - return file; - } - - @Override - public File getFileLocation() throws MissingArtifactException { - return file; - } - @Override - public String toString() { - return "wrapped(" + artifact + ", " + file + ")"; - } - }; - } - -} diff --git a/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java b/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java deleted file mode 100644 index 0aeab9c..0000000 --- a/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Artifactural - * Copyright (c) 2018. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package com.amadornes.artifactural.base.cache; - -import com.amadornes.artifactural.api.artifact.Artifact; -import com.amadornes.artifactural.api.artifact.ArtifactIdentifier; -import com.amadornes.artifactural.base.util.PatternReplace; - -import java.io.File; -import java.util.AbstractMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class LocatedArtifactCache extends ArtifactCacheBase { - private static final String PATTERN = "[group]/[name](/[meta_hash])/[version]/[name]-[version](-[classifier])(-[specifier]).[extension]"; - private final File path; - - public LocatedArtifactCache(File path) { - this.path = path; - } - - @Override - public Artifact.Cached store(Artifact artifact) { - return doStore(getPath(artifact), artifact); - } - - public File getPath(Artifact artifact) { - ArtifactIdentifier identifier = artifact.getIdentifier(); - Map<String, String> names = Stream.of( - entry("group", identifier.getGroup()), - entry("name", identifier.getName()), - entry("version", identifier.getVersion()), - entry("classifier", identifier.getClassifier()), - entry("extension", identifier.getExtension()), - //entry("specifier", specifier), /? - entry("meta_hash", artifact.getMetadata().getHash()) - ).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); - return new File(path, PatternReplace.replace(PATTERN, names)); - } - - private static <K,V> Entry<K,V> entry(K key, V value) { - return new AbstractMap.SimpleEntry<>(key, value); - } - - @Override - public String toString() { - return "LocatedArtifactCache(" + path + ")"; - } - -} |
