From 2009.igem.org
/*
Copyright: synbiowave
License: GPL
Authors: Jörg Walossek
Version: 0.1
DESCRIPTION:
This class represents the internal used sequence format.
This is only change over class and is build up very general to remain flexibel for different formats.
*/
package org.synbiowave.database;
import java.util.ArrayList;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Text;
import com.google.wave.api.Annotation;
import com.google.wave.api.Range;
// TODO: Auto-generated Javadoc
/**
* The Class Sequence.
*/
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Sequence {
/** The id. */
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
/** The author. */
@Persistent
private String author;
/** The timestamp. */
@Persistent
private Long timestamp;
/** The wave id. */
@Persistent
private ArrayList<String> waveID;
/** The wavelet id. */
@Persistent
private ArrayList<String> waveletID;
/** The blip id. */
@Persistent
private ArrayList<String> blipID;
/** The name. */
@Persistent
private String name;
/** The sequence. */
@Persistent(defaultFetchGroup="true")
private Text sequence;
/** The type. */
@Persistent
private String type;
/** The annotations. */
@Persistent
private ArrayList<String> annotations;
/** The plain. */
@Persistent(defaultFetchGroup="true")
private Text plain;
/**
* Instantiates a new sequence.
*/
public Sequence(){}
/**
* Instantiates a new sequence.
*
* @param author the author
* @param timestamp the timestamp
* @param waveID the wave id
* @param waveletID the wavelet id
* @param blipID the blip id
* @param sequence the sequence
* @param type the type
*/
public Sequence(String author,Long timestamp,String waveID,String waveletID,String blipID,String sequence,String type) {
this.author=author;
this.timestamp=timestamp;
this.waveID=new ArrayList<String>();
this.waveID.add(waveID);
this.waveletID=new ArrayList<String>();
this.waveletID.add(waveletID);
this.blipID=new ArrayList<String>();
this.blipID.add(blipID);
this.name=null;
this.sequence=new Text(sequence);
this.type=type;
this.annotations=new ArrayList<String>();
this.plain=null;}
/**
* Gets the id.
*
* @return the id
*/
public Long getId(){return id;}
/**
* Gets the author.
*
* @return the author
*/
public String getAuthor(){return author;}
/**
* Gets the timestamp.
*
* @return the timestamp
*/
public Long getTimestamp(){return timestamp;}
/**
* Gets the wave id.
*
* @return the wave id
*/
public ArrayList<String> getWaveID(){return waveID;}
/**
* Gets the wavelet id.
*
* @return the wavelet id
*/
public ArrayList<String> getWaveletID(){return waveletID;}
/**
* Gets the blip id.
*
* @return the blip id
*/
public ArrayList<String> getBlipID(){return blipID;}
/**
* Gets the name.
*
* @return the name
*/
public String getName(){return name;}
/**
* Gets the sequence.
*
* @return the sequence
*/
public String getSequence(){return sequence.getValue();}
/**
* Gets the type.
*
* @return the type
*/
public String getType(){return type;}
/**
* Gets the annotations.
*
* @return the annotations
*/
public ArrayList<Annotation> getAnnotations(){
ArrayList<Annotation> annotations=new ArrayList<Annotation>();
for(String stringAnnotation:this.annotations){
String[] annotationParts=stringAnnotation.split("§");
annotations.add(new Annotation(annotationParts[0],annotationParts[1],
new Range(Integer.parseInt(annotationParts[2]),Integer.parseInt(annotationParts[3]))));}
return annotations;}
/**
* Gets the plain.
*
* @return the plain
*/
public String getPlain(){return plain.getValue();}
/**
* Sets the name.
*
* @param name the new name
*/
public void setName(String name){this.name=name;}
/**
* Sets the sequence.
*
* @param sequence the new sequence
*/
public void setSequence(String sequence){this.sequence=new Text(sequence);}
/**
* Sets the type.
*
* @param type the new type
*/
public void setType(String type){this.type=type;}
/**
* Adds the annotation.
*
* @param annotation the annotation
*/
public void addAnnotation(Annotation annotation){
String stringAnnotation=
annotation.getName()+"§"+annotation.getValue()+"§"+annotation.getRange().getStart()
+"§"+annotation.getRange().getEnd();
this.annotations.add(stringAnnotation);}
/**
* Sets the annotations.
*
* @param annotations the new annotations
*/
public void setAnnotations(ArrayList<Annotation> annotations){
String stringAnnotation;
for(Annotation annotation:annotations){
stringAnnotation=
annotation.getName()+"§"+annotation.getValue()+"§"+annotation.getRange().getStart()
+"§"+annotation.getRange().getEnd();
this.annotations.add(stringAnnotation);}}
/**
* Sets the plain.
*
* @param plain the new plain
*/
public void setPlain(String plain){this.plain=new Text(plain);}
}