package org.seqcode.projects.seqview.model; import java.util.*; import org.seqcode.data.seqdata.*; import org.seqcode.genome.location.Region; import org.seqcode.gseutils.*; public class SeqAnalysisModel extends SeqViewModel implements RegionModel, Runnable { private SeqAnalysis analysis; private SeqAnalysisProperties props; private Collection<SeqAnalysisResult> results; private Region region; private boolean newinput; public SeqAnalysisModel(SeqAnalysis a) { analysis = a; props = new SeqAnalysisProperties(); } public void clearValues() { results = null; } public Region getRegion() {return region;} public void setRegion(Region r) { if (newinput == false) { if (!r.equals(region)) { region = r; newinput = true; } else { notifyListeners(); } } } public void resetRegion(Region r) { if (newinput == false) { region = r; newinput = true; } } public boolean isReady() {return !newinput;} public Collection<SeqAnalysisResult> getResults() { return results;} public synchronized void run() { while(keepRunning()) { try { if (!newinput) { wait(); } } catch (InterruptedException ex) { } if (newinput) { try { results = analysis.getResults(region); } catch (Exception e) { e.printStackTrace(); results = new ArrayList<SeqAnalysisResult>(); } newinput = false; notifyListeners(); } } } }