// $HeadURL$ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.screensaver.io.screenresults; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedSet; import org.apache.log4j.Logger; import org.hibernate.ScrollableResults; import org.joda.time.DateTime; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import edu.harvard.med.screensaver.db.CellsDAO; import edu.harvard.med.screensaver.db.DAOTransaction; import edu.harvard.med.screensaver.db.GenericEntityDAO; import edu.harvard.med.screensaver.db.HqlBuilderCallback; import edu.harvard.med.screensaver.db.LibrariesDAO; import edu.harvard.med.screensaver.db.Query; import edu.harvard.med.screensaver.db.ScreenResultsDAO; import edu.harvard.med.screensaver.db.SortDirection; import edu.harvard.med.screensaver.io.libraries.LibraryCopyPlateListParserResult; import edu.harvard.med.screensaver.model.DuplicateEntityException; import edu.harvard.med.screensaver.model.Entity; import edu.harvard.med.screensaver.model.Volume; import edu.harvard.med.screensaver.model.cells.Cell; import edu.harvard.med.screensaver.model.cells.ExperimentalCellInformation; import edu.harvard.med.screensaver.model.cherrypicks.CherryPickRequest; import edu.harvard.med.screensaver.model.libraries.Copy; import edu.harvard.med.screensaver.model.libraries.CopyUsageType; import edu.harvard.med.screensaver.model.libraries.Library; import edu.harvard.med.screensaver.model.libraries.LibraryContentsVersion; import edu.harvard.med.screensaver.model.libraries.LibraryType; import edu.harvard.med.screensaver.model.libraries.LibraryWellType; import edu.harvard.med.screensaver.model.libraries.Plate; import edu.harvard.med.screensaver.model.libraries.PlateSize; import edu.harvard.med.screensaver.model.libraries.Reagent; import edu.harvard.med.screensaver.model.libraries.ReagentVendorIdentifier; import edu.harvard.med.screensaver.model.libraries.SmallMoleculeReagent; import edu.harvard.med.screensaver.model.libraries.Well; import edu.harvard.med.screensaver.model.libraries.WellCopy; import edu.harvard.med.screensaver.model.libraries.WellKey; import edu.harvard.med.screensaver.model.meta.RelationshipPath; import edu.harvard.med.screensaver.model.screenresults.AssayWell; import edu.harvard.med.screensaver.model.screenresults.DataColumn; import edu.harvard.med.screensaver.model.screenresults.ResultValue; import edu.harvard.med.screensaver.model.screenresults.ScreenResult; import edu.harvard.med.screensaver.model.screens.ProjectPhase; import edu.harvard.med.screensaver.model.screens.Screen; import edu.harvard.med.screensaver.model.screens.ScreenType; import edu.harvard.med.screensaver.model.screens.StudyType; import edu.harvard.med.screensaver.model.users.LabHead; /** * A DAO implementation that can be used in a database-free environment. * * @motivation for command-line ScreenResultImporter, when used in parse-only * (non-import) mode. * @motivation testing ScreenResultImporter * * @author <a mailto="andrew_tolopko@hms.harvard.edu">Andrew Tolopko</a> * @author <a mailto="john_sullivan@hms.harvard.edu">John Sullivan</a> */ public class MockDaoForScreenResultImporter implements GenericEntityDAO, ScreenResultsDAO, LibrariesDAO, CellsDAO { private static final Logger log = Logger.getLogger(MockDaoForScreenResultImporter.class); private static final String NAME_OF_PSEUDO_LIBRARY_FOR_IMPORT = "PseudoLibraryForScreenResultImport"; private static final Set<String> EMPTY_WELL_NAMES = Sets.newHashSet("A01", "A04", "A07"); private Library _library; public MockDaoForScreenResultImporter() { _library = new Library(null, NAME_OF_PSEUDO_LIBRARY_FOR_IMPORT, NAME_OF_PSEUDO_LIBRARY_FOR_IMPORT, ScreenType.SMALL_MOLECULE, LibraryType.OTHER, 1, Integer.MAX_VALUE, PlateSize.WELLS_384); } public Well findWell(WellKey wellKey) { try { return _library.createWell(wellKey, EMPTY_WELL_NAMES.contains(wellKey.getWellName()) ? LibraryWellType.EMPTY : LibraryWellType.EXPERIMENTAL); } catch (DuplicateEntityException e) { for (Well well : _library.getWells()) { if (well.getWellKey().equals(wellKey)) { return well; } } return null; } } public Collection<String> findAllVendorNames() { return new ArrayList<String>(); } public Library findLibraryWithPlate(Integer plateNumber) { return _library; } public Set<Reagent> findReagents(ReagentVendorIdentifier rvi, boolean latestReleasedVersionsOnly) { return Sets.newHashSet(); } public void deleteLibraryContentsVersion(LibraryContentsVersion libraryContentsVersion) { } public Set<Well> findWellsForPlate(int plate) { return null; } public void loadOrCreateWellsForLibrary(Library library) { } public void deleteEntity(Entity entity) { } public void doInTransaction(DAOTransaction daoTransaction) { daoTransaction.runTransaction(); } public <E extends Entity> List<E> findAllEntitiesOfType(Class<E> entityClass) { return null; } public <E extends Entity> List<E> findAllEntitiesOfType(Class<E> entityClass, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity> List<E> findAllEntitiesOfType(Class<E> entityClass, boolean readOnly) { return null; } public <E extends Entity> List<E> findEntitiesByHql(Class<E> entityClass, String hql, Object... hqlParameters) { return null; } public <E extends Entity> List<E> findEntitiesByProperty(Class<E> entityClass, String propertyName, Object propertyValue) { return null; } public <E extends Entity> List<E> findEntitiesByProperty(Class<E> entityClass, String propertyName, Object propertyValue, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity> List<E> findEntitiesByProperty(Class<E> entityClass, String propertyName, Object propertyValue, boolean readOnly) { return null; } public <E extends Entity<K>,K extends Serializable> E findEntityById(Class<E> entityClass, K id) { return null; } public <E extends Entity<K>,K extends Serializable> E findEntityById(Class<E> entityClass, K id, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity<K>,K extends Serializable> E findEntityById(Class<E> entityClass, K id, boolean readOnly) { return null; } @SuppressWarnings("unchecked") public <E extends Entity> E findEntityByProperty(Class<E> entityClass, String propertyName, Object propertyValue) { if (entityClass.equals(Screen.class) && propertyName.equals(Screen.facilityId.getPropertyName())) { LabHead user = new LabHead("First", "Last", null); Screen screen = new Screen(null, propertyValue.toString(), user, user, ScreenType.SMALL_MOLECULE, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "title"); return (E) screen; } return null; } public <E extends Entity> E findEntityByProperty(Class<E> entityClass, String propertyName, Object propertyValue, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity> E findEntityByProperty(Class<E> entityClass, String propertyName, Object propertyValue, boolean readOnly) { return null; } public void flush() { } public <E extends Entity> void need(E entity, RelationshipPath<E> relationship) { } public <E extends Entity> void needReadOnly(E entity, RelationshipPath<E> relationship) { } public void saveOrUpdateEntity(Entity entity) { } public void persistEntity(Entity entity) { } public <E extends Entity> E reattachEntity(E entity) { return null; } public <E extends Entity> E reloadEntity(E entity) { return null; } public <E extends Entity> E reloadEntity(E entity, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity> E reloadEntity(E entity, boolean readOnly) { return null; } public void deleteScreenResult(ScreenResult screenResult) { } public Map<WellKey,ResultValue> findResultValuesByPlate(Integer plateNumber, DataColumn col) { return null; } public Map<WellKey,List<ResultValue>> findResultValuesByPlate(Integer plateNumber, List<DataColumn> col) { return null; } public Map<WellKey,List<ResultValue>> findSortedResultValueTableByRange(List<DataColumn> selectedCols, int sortBy, SortDirection sortDirection, int fromIndex, Integer rowsToFetch, DataColumn positivesOnlyCol, Integer plateNumber) { return null; } public Map<Copy,Volume> findRemainingVolumesInWellCopies(Well well, CopyUsageType copyUsageType) { return Maps.newHashMap(); } public <E extends Entity> List<E> findEntitiesByProperties(Class<E> entityClass, Map<String,Object> name2Value) { return null; } public <E extends Entity> List<E> findEntitiesByProperties(Class<E> entityClass, Map<String,Object> name2Value, boolean readOnly, RelationshipPath<E> relationshipIn) { return null; } public <E extends Entity> List<E> findEntitiesByProperties(Class<E> entityClass, Map<String,Object> name2Value, boolean readOnly) { return null; } public <E extends Entity> E findEntityByProperties(Class<E> entityClass, Map<String,Object> name2Value) { return null; } public <E extends Entity> E findEntityByProperties(Class<E> entityClass, Map<String,Object> name2Value, boolean readOnly, RelationshipPath<E> relationship) { return null; } public <E extends Entity> E findEntityByProperties(Class<E> entityClass, Map<String,Object> name2Value, boolean readOnly) { return null; } public List<WellCopy> findWellCopyVolumes(Library library) { return null; } public List<WellCopy> findWellCopyVolumes(Copy copy) { return null; } public List<WellCopy> findWellCopyVolumes(Integer plateNumber) { return null; } public Collection<WellCopy> findWellCopyVolumes(Copy copy, Integer plateNumber) { return null; } public Collection<WellCopy> findWellCopyVolumes(WellKey wellKey) { return null; } public Collection<WellCopy> findWellCopyVolumes(CherryPickRequest cherryPickRequest, boolean forUnfufilledLabCherryPicksOnly) { return null; } public List<Library> findLibrariesOfType(LibraryType[] libraryTypes, ScreenType[] screenTypes) { return null; } public boolean isPlateRangeAvailable(Integer startPlate, Integer endPlate) { return false; } public void clear() {} public <T> List<T> runQuery(Query<T> query) { return null; } public ScrollableResults runScrollQuery(final edu.harvard.med.screensaver.db.ScrollQuery query) { return null; } public AssayWell findAssayWell(ScreenResult screenResult, WellKey wellKey) { return null; } @SuppressWarnings("unchecked") public Entity mergeEntity(Entity entity) { return null; } @Override public int countExperimentalWells(int startPlate, int endPlate) { return 0; } @Override public Plate findPlate(int plateNumber, String copyName) { return null; } @Override public List<DataColumn> findMutualPositiveColumns(ScreenResult sr) { return null; } @Override public ScreenResult getLatestScreenResult() { return null; } @Override public Set<ScreenType> findScreenTypesForReagents(Set<String> reagentIds) { return null; } @Override public Set<ScreenType> findScreenTypesForWells(Set<WellKey> wellKeys) { return null; } @Override public List<DataColumn> findMutualPositiveColumns(HqlBuilderCallback hqlBuilderCallback) { return null; } @Override public <E extends Entity,T> Set<T> findDistinctPropertyValues(Class<E> entityClass, String propertyName) { return Sets.newHashSet(); } public Set<Integer> queryForPlateIds(LibraryCopyPlateListParserResult parserResult) { return Sets.newHashSet(); } @Override public void calculateCopyScreeningStatistics(Collection<Copy> copies) { } @Override public void calculateCopyVolumeStatistics(Collection<Copy> copies) { } @Override public void calculatePlateScreeningStatistics(Collection<Plate> plates) { } @Override public void calculatePlateVolumeStatistics(Collection<Plate> plates) { } public Set<SmallMoleculeReagent> findReagents(String facilityId, Integer saltId, Integer batchId, boolean latestReleasedVersionsOnly) { return Sets.newHashSet(); } @Override public Set<WellKey> findWellKeysForReagentVendorID(String facilityVendorId, int limitSize) { // TODO Auto-generated method stub return null; } @Override public Set<WellKey> findWellKeysForCompoundName(final String compoundSearchName, int limitSize) { return Sets.newHashSet(); } @Override public Well findCanonicalReagentWell(String facilityId, Integer saltId, Integer facilityBatchId) { return null; } @Override public Set<String> findCanonicalReagentWellIds(Set<String> wellIds) { return null; } @Override public Set<Well> findAllCanonicalReagentWells() { return null; } @Override public SortedSet<ExperimentalCellInformation> findCellExperimentsFromCLOIds(String[] split) { // TODO Auto-generated method stub return null; } public Set<Cell> findCellsByCloIds(String[] cloIds) { return null; } public Set<Cell> findCellsByHMSID(String[] split){ return null; } public Set<String> findCanonicalCompoundsScreenedByWellId(Cell cell) { return null; } @Override public DateTime getLatestDataLoadingDate() { // TODO Auto-generated method stub return null; } @Override public Set<Well> findWells(String facilityId, Integer saltId, Integer facilityBatchId) { // TODO Auto-generated method stub return null; } }