aboutsummaryrefslogtreecommitdiff
path: root/src/shared/java/com/amadornes/artifactural/base/cache
diff options
context:
space:
mode:
authorLexManos <LexManos@gmail.com>2021-01-17 17:35:01 -0800
committerLexManos <LexManos@gmail.com>2021-01-17 17:40:39 -0800
commit4089917696fffbd4b818fb90958d20f0714f93fb (patch)
tree1f5de4972d9afe0328d7d0ce929aac06c3bca15e /src/shared/java/com/amadornes/artifactural/base/cache
parent631cd05e726092c51e95b52bb8a8bb6a2ae2cc42 (diff)
downloadArtifactural-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.java129
-rw-r--r--src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java69
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 + ")";
- }
-
-}