X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FImageImpl.java;h=0014a131fc5a53e3136bc026e721195e207be41e;hb=e7905b3679a3ad0d488f29522a2d1e3ed7b84367;hp=c8f7a9bb7549fe37cc69b44d323216e655723133;hpb=518efffdab386d47882aedee35031e66852c2772;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/ImageImpl.java b/src/main/java/net/pterodactylus/sone/data/ImageImpl.java index c8f7a9b..0014a13 100644 --- a/src/main/java/net/pterodactylus/sone/data/ImageImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/ImageImpl.java @@ -18,7 +18,6 @@ package net.pterodactylus.sone.data; import static com.google.common.base.Optional.absent; import static com.google.common.base.Optional.fromNullable; -import static com.google.common.base.Optional.of; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; @@ -39,7 +38,7 @@ public class ImageImpl implements Image { private final String id; /** The Sone the image belongs to. */ - private Sone sone; + private final Sone sone; /** The album this image belongs to. */ private Album album; @@ -48,13 +47,13 @@ public class ImageImpl implements Image { private String key; /** The creation time of the image. */ - private long creationTime; + private final long creationTime; /** The width of the image. */ - private int width; + private final int width; /** The height of the image. */ - private int height; + private final int height; /** The title of the image. */ private String title; @@ -63,9 +62,8 @@ public class ImageImpl implements Image { private String description; /** Creates a new image with a random ID. */ - public ImageImpl() { - this(UUID.randomUUID().toString()); - this.creationTime = System.currentTimeMillis(); + public ImageImpl(Sone sone, long creationTime, String key, int width, int height) { + this(UUID.randomUUID().toString(), sone, creationTime, key, width, height); } /** @@ -73,9 +71,15 @@ public class ImageImpl implements Image { * * @param id * The ID of the image + * @param creationTime */ - public ImageImpl(String id) { + public ImageImpl(String id, Sone sone, long creationTime, String key, int width, int height) { this.id = checkNotNull(id, "id must not be null"); + this.sone = sone; + this.creationTime = creationTime; + this.key = key; + this.width = width; + this.height = height; } // @@ -98,14 +102,6 @@ public class ImageImpl implements Image { } @Override - public Image setAlbum(Album album) { - checkNotNull(album, "album must not be null"); - checkNotNull(album.getSone().equals(getSone()), "album must belong to the same Sone as this image"); - this.album = album; - return this; - } - - @Override public String getKey() { return key; } @@ -143,32 +139,10 @@ public class ImageImpl implements Image { public Modifier modify() throws IllegalStateException { // TODO: reenable check for local images return new Modifier() { - private Optional sone = absent(); - - private Optional creationTime = absent(); - private Optional key = absent(); - private Optional title = absent(); - private Optional description = absent(); - private Optional width = absent(); - - private Optional height = absent(); - - @Override - public Modifier setSone(Sone sone) { - this.sone = fromNullable(sone); - return this; - } - - @Override - public Modifier setCreationTime(long creationTime) { - this.creationTime = of(creationTime); - return this; - } - @Override public Modifier setKey(String key) { this.key = fromNullable(key); @@ -188,31 +162,18 @@ public class ImageImpl implements Image { } @Override - public Modifier setWidth(int width) { - this.width = of(width); - return this; - } - - @Override - public Modifier setHeight(int height) { - this.height = of(height); - return this; - } - - @Override public Image update() throws IllegalStateException { - checkState(!sone.isPresent() || (ImageImpl.this.sone == null) || sone.get().equals(ImageImpl.this.sone), "can not change Sone once set"); - checkState(!creationTime.isPresent() || (ImageImpl.this.creationTime == 0), "can not change creation time once set"); - checkState(!key.isPresent() || (ImageImpl.this.key == null) || key.get().equals(ImageImpl.this.key), "can not change key once set"); - checkState(!width.isPresent() || (ImageImpl.this.width == 0) || width.get().equals(ImageImpl.this.width), "can not change width once set"); - checkState(!height.isPresent() || (ImageImpl.this.height == 0) || height.get().equals(ImageImpl.this.height), "can not change height once set"); - ImageImpl.this.sone = sone.or(ImageImpl.this.sone); - ImageImpl.this.creationTime = creationTime.or(ImageImpl.this.creationTime); - ImageImpl.this.key = key.or(ImageImpl.this.key); - ImageImpl.this.title = title.or(ImageImpl.this.title); - ImageImpl.this.description = description.or(ImageImpl.this.description); - ImageImpl.this.width = width.or(ImageImpl.this.width); - ImageImpl.this.height = height.or(ImageImpl.this.height); + checkState(!key.isPresent() || (ImageImpl.this.key == null), "key can not be changed"); + + if (key.isPresent()) { + ImageImpl.this.key = key.get(); + } + if (title.isPresent()) { + ImageImpl.this.title = title.get(); + } + if (description.isPresent()) { + ImageImpl.this.description = description.get(); + } return ImageImpl.this; }