001package co.codewizards.cloudstore.local.persistence; 002 003import javax.jdo.annotations.Discriminator; 004import javax.jdo.annotations.DiscriminatorStrategy; 005import javax.jdo.annotations.Index; 006import javax.jdo.annotations.Indices; 007import javax.jdo.annotations.Inheritance; 008import javax.jdo.annotations.InheritanceStrategy; 009import javax.jdo.annotations.NullValue; 010import javax.jdo.annotations.PersistenceCapable; 011import javax.jdo.annotations.Persistent; 012import javax.jdo.annotations.Queries; 013import javax.jdo.annotations.Query; 014 015@PersistenceCapable 016@Inheritance(strategy=InheritanceStrategy.NEW_TABLE) 017@Discriminator(strategy=DiscriminatorStrategy.VALUE_MAP) 018@Indices({ 019 @Index(name="Modification_remoteRepository_localRevision", members={"remoteRepository", "localRevision"}), 020}) 021@Queries({ 022 @Query(name="getModificationsAfter_remoteRepository_localRevision", value="SELECT WHERE this.remoteRepository == :remoteRepository && this.localRevision > :localRevision"), 023 @Query(name="getModificationsBeforeOrEqual_remoteRepository_localRevision", value="SELECT WHERE this.remoteRepository == :remoteRepository && this.localRevision <= :localRevision") 024}) 025public abstract class Modification extends Entity implements AutoTrackLocalRevision { 026 027 @Persistent(nullValue=NullValue.EXCEPTION) 028 private RemoteRepository remoteRepository; 029 030 private long localRevision; 031 032 /** 033 * Gets the remote repository to which this modification must be synced. 034 * @return the remote repository to which this modification must be synced. 035 */ 036 public RemoteRepository getRemoteRepository() { 037 return remoteRepository; 038 } 039 040 public void setRemoteRepository(RemoteRepository remoteRepository) { 041 this.remoteRepository = remoteRepository; 042 } 043 044 @Override 045 public long getLocalRevision() { 046 return localRevision; 047 } 048 @Override 049 public void setLocalRevision(long revision) { 050 this.localRevision = revision; 051 } 052}