package org.juxtasoftware.dao;
import java.util.List;
import java.util.Set;
import org.juxtasoftware.model.CollatorConfig;
import org.juxtasoftware.model.ComparisonSet;
import org.juxtasoftware.model.ResourceInfo;
import org.juxtasoftware.model.Usage;
import org.juxtasoftware.model.Witness;
import org.juxtasoftware.model.Workspace;
/**
* Data access object for Comparison Set Objects
* @author loufoster
*
*/
public interface ComparisonSetDao extends JuxtaDao<ComparisonSet> {
void update(final ComparisonSet set);
boolean exists( final Workspace ws, final String setName );
ComparisonSet find( final Workspace ws, final String setName );
List<ComparisonSet> list( final Workspace ws);
ResourceInfo getInfo(final Long setId);
// witness management
List<Witness> getWitnesses( final ComparisonSet set );
void addWitnesses( final ComparisonSet set, final Set<Witness> witnesses);
void deleteAllWitnesses( final ComparisonSet set );
void deleteWitness( final ComparisonSet set, final Witness witness );
boolean isWitness( final ComparisonSet set, final Witness witness );
void setTokenzedLength(final ComparisonSet set, final Witness witness, final long tokenizedLength );
long getTokenzedLength(final ComparisonSet set, final Witness witness );
// collation reset
void clearCollationData( final ComparisonSet set);
// alignment validation
boolean hasAlignment( final ComparisonSet set, Long alignmentId );
// config management
CollatorConfig getCollatorConfig( final ComparisonSet set );
void updateCollatorConfig( final ComparisonSet set, final CollatorConfig cfg );
// get the list of items used to populate this comparions set
List<Usage> getUsage(ComparisonSet set);
}