001package co.codewizards.cloudstore.local.persistence;
002
003import java.util.HashSet;
004import java.util.Set;
005
006import javax.jdo.annotations.Discriminator;
007import javax.jdo.annotations.DiscriminatorStrategy;
008import javax.jdo.annotations.Inheritance;
009import javax.jdo.annotations.InheritanceStrategy;
010import javax.jdo.annotations.Join;
011import javax.jdo.annotations.NullValue;
012import javax.jdo.annotations.PersistenceCapable;
013import javax.jdo.annotations.Persistent;
014
015/**
016 * A {@code LocalRepository} represents the local repository inside the repository's database.
017 * <p>
018 * There is exactly one {@code LocalRepository} instance in the database.
019 * @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
020 */
021@PersistenceCapable
022@Inheritance(strategy=InheritanceStrategy.SUPERCLASS_TABLE)
023@Discriminator(strategy=DiscriminatorStrategy.VALUE_MAP, value="LocalRepository")
024public class LocalRepository extends Repository {
025
026        @Persistent(nullValue=NullValue.EXCEPTION)
027        private Directory root;
028
029        @Persistent(nullValue=NullValue.EXCEPTION)
030        private byte[] privateKey;
031
032        @Join
033        private Set<String> aliases;
034
035        public LocalRepository() { }
036
037        /**
038         * Get the root directory of this repository.
039         * @return the root directory of this repository. Never <code>null</code> in persistence.
040         */
041        public Directory getRoot() {
042                return root;
043        }
044        public void setRoot(Directory root) {
045                this.root = root;
046        }
047
048        public byte[] getPrivateKey() {
049                return privateKey;
050        }
051
052        public void setPrivateKey(byte[] privateKey) {
053                this.privateKey = privateKey;
054        }
055
056        public Set<String> getAliases() {
057                if (aliases == null)
058                        aliases = new HashSet<>();
059
060                return aliases;
061        }
062}