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}