/* File: col7a1/model/UploadBatch.java
* Copyright: GBIC 2000-2010, all rights reserved
* Date: August 11, 2010
*
* generator: org.molgenis.generators.csv.CsvReaderGen 3.3.2-testing
*
*
* THIS FILE HAS BEEN GENERATED, PLEASE DO NOT EDIT!
*/
package org.molgenis.patho.csv;
import org.molgenis.framework.db.CsvToDatabase;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.Database.DatabaseAction;
import org.molgenis.util.CsvReader;
import org.molgenis.util.Entity;
import org.molgenis.util.Tuple;
import org.springframework.stereotype.Component;
/**
* Reads UploadBatch from a delimited (csv) file, resolving xrefs to ids where
* needed, that is the tricky bit ;-)
*/
@Component
public class UploadBatchCsvReader extends CsvToDatabase<Entity>
{
@Override
public int importCsv(Database db, CsvReader reader, Tuple constants, DatabaseAction action, String missingValues)
throws Exception
{
// TODO Auto-generated method stub
return 0;
}
// public final transient Logger logger =
// Logger.getLogger(UploadBatchCsvReader.class);
// private final String[] patientValueCols = {
// "LH7:2 Amount of type VII collagen",
// "IF Retention of type VII Collagen in basal cells",
// "Anchoring fibrils Number", "Anchoring fibrils Ultrastructure",
// "EM Retention of type VII Collagen in basal cells", "Gender", "Age",
// "Ethnicity", "Deceased", "Cause of Death", "Blistering", "Location",
// "Hands", "Feet", "Arms", "Legs", "Proximal body flexures", "Trunk",
// "Mucosa", "Skin atrophy", "Milia", "Nail dystrophy",
// "Albopapuloid papules", "Pruritic papules", "Alopecia",
// "Squamous cell carcinoma(s)", "Revertant skin patch(es)", "Mechanism",
// "Flexion contractures", "Pseudosyndactyly (hands)", "Microstomia",
// "Ankyloglossia",
// "Swallowing difficulties/ dysphagia/ oesophagus strictures",
// "Growth retardation", "Anaemia", "Renal failure",
// "Dilated cardiomyopathy", "Other" };
// private final String[] variantValueCols = { };
//
// /**
// * Imports UploadBatch from tab/comma delimited File
// * @param db database to import into
// * @param reader csv reader to load data from
// * @param defaults to set default values for each row
// * @param dbAction indicating wether to add,update,remove etc
// * @param missingValues indicating what value in the csv is treated as
// 'null' (e.g. "" or "NA")
// * @return number of elements imported
// */
// public int importCsv(final Database db, CsvReader reader, final Tuple
// defaults, final DatabaseAction dbAction, final String missingValues)
// throws DatabaseException, IOException, Exception
// {
// //cache for entities of which xrefs couldn't be resolved (e.g. if there
// is a self-refence)
// //these entities can be updated with their xrefs in a second round when
// all entities are in the database
// //final List<UploadBatch> uploadBatchsMissingRefs = new
// ArrayList<UploadBatch>();
//
// // db.beginTx();
// //
// // for (String variantCol : variantValueCols)
// // {
// // Measurement measurement = new Measurement();
// // measurement.setName(variantCol);
// // measurement.setDataType("string");
// // measurement.setTemporal(false);
// // db.add(measurement);
// // }
// // for (String patientCol : patientValueCols)
// // {
// // Measurement measurement = new Measurement();
// // measurement.setName(patientCol);
// // measurement.setDataType("string");
// // measurement.setTemporal(false);
// // db.add(measurement);
// // }
// //
// // db.commitTx();
//
// final EntityManager em = db.getEntityManager();
// final UploadService uploadService =
// ServiceLocator.instance().getUploadService();
// final PublicationService publicationService =
// ServiceLocator.instance().getPublicationService();
// final Login securityService = db.getLogin();
//
// final Submission submission = new Submission();
// DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// submission.setDate(dateFormat.format(new Date()));
// submission.setReleasedate(dateFormat.format(new Date()));
// submission.setIdentifier("S" + new Date());
// List<Integer> submitters = new ArrayList<Integer>();
// submitters.add(securityService.getUserId());
// submission.setSubmitters_Id(submitters);
// db.add(submission);
//
// //load default investigation
// final Investigation investigation = db.findById(Investigation.class, 1);
//
// //cache for objects to be imported from file (in batch)
// final Map<String, AlternateId> alternateIdList = new HashMap<String,
// AlternateId>();
// final List<ObservedValue> observedValueList = new
// ArrayList<ObservedValue>();
// final Map<String, Patient> patientList = new HashMap<String, Patient>();
// final Set<String> pubmedStringList = new HashSet<String>();
// final Map<String, Variant> variantList = new HashMap<String, Variant>();
// final List<SequenceRelation> sequenceRelationList = new
// ArrayList<SequenceRelation>();
//
// reader.setMissingValues(missingValues);
// /*
// * Set column separator to \t
// * Override from CsvBufferedReaderMultiline:
// * public static char[] separators = { ',', '\t', ';', ' ' };
// */
// reader.setSeparator('\t');
//
// int mutationIdentifier = uploadService.findMaxMutationIdentifier();
// int patientIdentifier = uploadService.findMaxPatientIdentifier();
//
// for (Tuple tuple : reader)
// {
// //parse object, setting defaults and values from file
//
// Patient patient = new Patient();
//
// patient.setSubmission(submission);
//
// // Add stable external identifier
//
// patientIdentifier = patientIdentifier + 1;
// patient.setName("P" + patientIdentifier);
//
// // Add the phenotype
// if (StringUtils.isNotEmpty(tuple.getString("Phenotype major type")) &&
// StringUtils.isNotEmpty(tuple.getString("Phenotype Subtype")))
// {
// patient.setPhenotype(tuple.getString("Phenotype major type") + ", " +
// tuple.getString("Phenotype Subtype").toLowerCase());
// }
//
// AlternateId patientId = new AlternateId();
// patientId.setDefinition("molgenis_patient_id");
// patientId.setName("P" + patientIdentifier);
// alternateIdList.put(patientId.getName(), patientId);
//
// patient.getAlternateId().add(patientId);
//
// // Add local id
//
// String localIdString = tuple.getString("Local patient number");
// AlternateId localId = new AlternateId();
// localId.setDefinition("local_patient_no");
// localId.setName(localIdString);
// alternateIdList.put(localId.getName(), localId);
//
// patient.getAlternateId().add(localId);
//
// // Add variants
//
// if (StringUtils.isNotEmpty(tuple.getString("cDNA change_1")))
// {
// String[] cdnaNotations =
// StringUtils.split(tuple.getString("cDNA change_1"), ", ");
// String[] aaNotations =
// StringUtils.split(tuple.getString("Protein change_1"), ", ");
//
// for (int i = 0; i < cdnaNotations.length; i++)
// {
// String cdnaNotation = cdnaNotations[i];
// String aaNotation = (ArrayUtils.getLength(aaNotations) ==
// ArrayUtils.getLength(cdnaNotations) ? aaNotations[i] : "");
//
// // Check whether already existing
// List<Variant> results = db.query(Variant.class).equals(Variant.NAME,
// cdnaNotation).find();
//
// if (results.size() < 1)
// {
// // Calculate some values from cdna position
// MutationUploadDTO mutationUploadDTO = new MutationUploadDTO();
// mutationUploadDTO.setCdnaNotation(cdnaNotation);
// uploadService.assignValuesFromNotation(mutationUploadDTO);
// if (StringUtils.isNotEmpty(aaNotation))
// mutationUploadDTO.setAaNotation(aaNotation);
//
// // Add cDNA variant notation
// Variant cdnaVariant = new Variant();
// cdnaVariant.setGene(db.query(Gene.class).equals(Gene.NAME,
// "COL7A1").find().get(0));
// cdnaVariant.setFeatureType(uploadService.getOntologyTermCache().get("variant"));
// cdnaVariant.setName(cdnaNotation);
// cdnaVariant.setSeqlen(mutationUploadDTO.getLength());
//
// variantList.put(cdnaVariant.getName(), cdnaVariant);
//
// cdnaVariant.setNameCdna(cdnaNotation);
// cdnaVariant.setStartCdna(mutationUploadDTO.getCdnaStart());
// cdnaVariant.setEndCdna(mutationUploadDTO.getCdnaEnd());
//
// cdnaVariant.setNameAa(aaNotation);
// cdnaVariant.setStartAa(mutationUploadDTO.getAaStart());
// cdnaVariant.setEndAa(mutationUploadDTO.getAaEnd());
//
// cdnaVariant.setNameGdna(mutationUploadDTO.getGdnaNotation());
// cdnaVariant.setStartGdna(mutationUploadDTO.getGdnaStart());
// cdnaVariant.setEndGdna(mutationUploadDTO.getGdnaEnd());
//
// cdnaVariant.setType(mutationUploadDTO.getType());
//
// // Add stable external identifier
//
// mutationIdentifier = mutationIdentifier + 1;
//
// AlternateId mutationId = new AlternateId();
// mutationId.setDefinition("molgenis_variant_id");
// mutationId.setName("M" + mutationIdentifier);
//
// alternateIdList.put(mutationId.getName(), mutationId);
//
// cdnaVariant.getAlternateId().add(mutationId);
//
// // Add observed values
//
// for (String variantValueCol : variantValueCols)
// {
// String value = ObjectUtils.toString(tuple.getString(variantValueCol),
// "unknown");
//
// ObservedValue observedValue = new ObservedValue();
// ObservableFeature feature = new ObservableFeature();
// feature.setName(variantValueCol);
// observedValue.setFeature(feature);
// observedValue.setInvestigation(investigation);
// observedValue.setTarget(cdnaVariant);
// observedValue.setValue(value);
//
// observedValueList.add(observedValue);
// }
//
// ObservedValue inheritanceOV = new ObservedValue();
// ObservableFeature inheritanceFeature = new ObservableFeature();
// inheritanceFeature.setName("Inheritance");
// inheritanceOV.setFeature(inheritanceFeature);
// inheritanceOV.setInvestigation(investigation);
// inheritanceOV.setTarget(cdnaVariant);
// inheritanceOV.setValue(ObjectUtils.toString(tuple.getString("Inheritance_1"),
// ""));
// observedValueList.add(inheritanceOV);
//
// ObservedValue deNovoOV = new ObservedValue();
// ObservableFeature deNovoFeature = new ObservableFeature();
// deNovoFeature.setName("De novo");
// deNovoOV.setFeature(deNovoFeature);
// deNovoOV.setInvestigation(investigation);
// deNovoOV.setTarget(cdnaVariant);
// deNovoOV.setValue(ObjectUtils.toString(tuple.getString("De novo_1"),
// ""));
// observedValueList.add(deNovoOV);
//
// // Add calculated values from variantUploadDTO
//
// ObservedValue codonChangeOV = new ObservedValue();
// ObservableFeature codonChangeFeature = new ObservableFeature();
// codonChangeFeature.setName("Codon change");
// codonChangeOV.setFeature(codonChangeFeature);
// codonChangeOV.setInvestigation(investigation);
// codonChangeOV.setTarget(cdnaVariant);
// codonChangeOV.setValue(mutationUploadDTO.getCodonChange());
// observedValueList.add(codonChangeOV);
//
// ObservedValue consequenceOV = new ObservedValue();
// ObservableFeature consequenceFeature = new ObservableFeature();
// consequenceFeature.setName("Consequence");
// consequenceOV.setFeature(consequenceFeature);
// consequenceOV.setInvestigation(investigation);
// consequenceOV.setTarget(cdnaVariant);
// consequenceOV.setValue(mutationUploadDTO.getConsequence());
// observedValueList.add(consequenceOV);
//
// ObservedValue splicingOV = new ObservedValue();
// ObservableFeature splicingFeature = new ObservableFeature();
// splicingFeature.setName("Effect on splicing");
// splicingOV.setFeature(splicingFeature);
// splicingOV.setInvestigation(investigation);
// splicingOV.setTarget(cdnaVariant);
// splicingOV.setValue(mutationUploadDTO.getEffectOnSplicing().toString());
// observedValueList.add(splicingOV);
//
// ObservedValue eventOV = new ObservedValue();
// ObservableFeature eventFeature = new ObservableFeature();
// eventFeature.setName("Event");
// eventOV.setFeature(eventFeature);
// eventOV.setInvestigation(investigation);
// eventOV.setTarget(cdnaVariant);
// eventOV.setValue(mutationUploadDTO.getEvent());
// observedValueList.add(eventOV);
//
// ObservedValue ntchangeOV = new ObservedValue();
// ObservableFeature ntchangeFeature = new ObservableFeature();
// ntchangeFeature.setName("NT change");
// ntchangeOV.setFeature(ntchangeFeature);
// ntchangeOV.setInvestigation(investigation);
// ntchangeOV.setTarget(cdnaVariant);
// ntchangeOV.setValue(mutationUploadDTO.getNtChange());
// observedValueList.add(ntchangeOV);
//
// patient.getMutations().add(cdnaVariant);
// }
// else
// {
// patient.getMutations().add(results.get(0));
// }
// }
// }
//
// //FIXME: code duplication
// if (StringUtils.isNotEmpty(tuple.getString("cDNA change_2")) &&
// !StringUtils.equalsIgnoreCase(tuple.getString("cDNA change_2"), "na"))
// {
// String[] cdnaNotations =
// StringUtils.split(tuple.getString("cDNA change_2"), ", ");
// String[] aaNotations =
// StringUtils.split(tuple.getString("Protein change_2"), ", ");
//
// for (int i = 0; i < cdnaNotations.length; i++)
// {
// String cdnaNotation = cdnaNotations[i];
// String aaNotation = (ArrayUtils.getLength(aaNotations) ==
// ArrayUtils.getLength(cdnaNotations) ? aaNotations[i] : "");
//
// // Check whether already existing
// List<Variant> results = db.query(Variant.class).equals(Variant.NAME,
// cdnaNotation).find();
//
// if (results.size() < 1)
// {
// // Calculate some values from cdna position
// MutationUploadDTO mutationUploadDTO = new MutationUploadDTO();
// mutationUploadDTO.setCdnaNotation(cdnaNotation);
// uploadService.assignValuesFromNotation(mutationUploadDTO);
// if (StringUtils.isNotEmpty(aaNotation))
// mutationUploadDTO.setAaNotation(aaNotation);
//
// // Add cDNA variant notation
// Variant cdnaVariant = new Variant();
// cdnaVariant.setGene(db.query(Gene.class).equals(Gene.NAME,
// "COL7A1").find().get(0));
// cdnaVariant.setFeatureType(uploadService.getOntologyTermCache().get("variant"));
// cdnaVariant.setName(cdnaNotation);
// cdnaVariant.setSeqlen(mutationUploadDTO.getLength());
//
// variantList.put(cdnaVariant.getName(), cdnaVariant);
//
// cdnaVariant.setNameCdna(cdnaNotation);
// cdnaVariant.setStartCdna(mutationUploadDTO.getCdnaStart());
// cdnaVariant.setEndCdna(mutationUploadDTO.getCdnaEnd());
//
// cdnaVariant.setNameAa(aaNotation);
// cdnaVariant.setStartAa(mutationUploadDTO.getAaStart());
// cdnaVariant.setEndAa(mutationUploadDTO.getAaEnd());
//
// cdnaVariant.setStartGdna(mutationUploadDTO.getGdnaStart());
// cdnaVariant.setEndGdna(mutationUploadDTO.getGdnaEnd());
//
// cdnaVariant.setType(mutationUploadDTO.getType());
//
// // Add stable external identifier
//
// mutationIdentifier = mutationIdentifier + 1;
//
// AlternateId mutationId = new AlternateId();
// mutationId.setDefinition("molgenis_variant_id");
// mutationId.setName("M" + mutationIdentifier);
//
// alternateIdList.put(mutationId.getName(), mutationId);
//
// cdnaVariant.getAlternateId().add(mutationId);
//
// // Add observed values
//
// for (String variantValueCol : variantValueCols)
// {
// String value = ObjectUtils.toString(tuple.getString(variantValueCol),
// "unknown");
//
// ObservedValue observedValue = new ObservedValue();
// ObservableFeature feature = new ObservableFeature();
// feature.setName(variantValueCol);
// observedValue.setFeature(feature);
// observedValue.setInvestigation(investigation);
// observedValue.setTarget(cdnaVariant);
// observedValue.setValue(value);
//
// observedValueList.add(observedValue);
// }
//
// ObservedValue inheritanceOV = new ObservedValue();
// ObservableFeature inheritanceFeature = new ObservableFeature();
// inheritanceFeature.setName("Inheritance");
// inheritanceOV.setFeature(inheritanceFeature);
// inheritanceOV.setInvestigation(investigation);
// inheritanceOV.setTarget(cdnaVariant);
// inheritanceOV.setValue(ObjectUtils.toString(tuple.getString("Inheritance_2"),
// ""));
// observedValueList.add(inheritanceOV);
//
// ObservedValue deNovoOV = new ObservedValue();
// ObservableFeature deNovoFeature = new ObservableFeature();
// deNovoFeature.setName("De novo");
// deNovoOV.setFeature(deNovoFeature);
// deNovoOV.setInvestigation(investigation);
// deNovoOV.setTarget(cdnaVariant);
// deNovoOV.setValue(ObjectUtils.toString(tuple.getString("De novo_2"),
// ""));
//
// // Add calculated values from variantUploadDTO
//
// ObservedValue codonChangeOV = new ObservedValue();
// ObservableFeature codonChangeFeature = new ObservableFeature();
// codonChangeFeature.setName("Codon change");
// codonChangeOV.setFeature(codonChangeFeature);
// codonChangeOV.setInvestigation(investigation);
// codonChangeOV.setTarget(cdnaVariant);
// codonChangeOV.setValue(mutationUploadDTO.getCodonChange());
// observedValueList.add(codonChangeOV);
//
// ObservedValue consequenceOV = new ObservedValue();
// ObservableFeature consequenceFeature = new ObservableFeature();
// consequenceFeature.setName("Consequence");
// consequenceOV.setFeature(consequenceFeature);
// consequenceOV.setInvestigation(investigation);
// consequenceOV.setTarget(cdnaVariant);
// consequenceOV.setValue(mutationUploadDTO.getConsequence());
// observedValueList.add(consequenceOV);
//
// ObservedValue splicingOV = new ObservedValue();
// ObservableFeature splicingFeature = new ObservableFeature();
// splicingFeature.setName("Effect on splicing");
// splicingOV.setFeature(splicingFeature);
// splicingOV.setInvestigation(investigation);
// splicingOV.setTarget(cdnaVariant);
// splicingOV.setValue(mutationUploadDTO.getEffectOnSplicing().toString());
// observedValueList.add(splicingOV);
//
// ObservedValue eventOV = new ObservedValue();
// ObservableFeature eventFeature = new ObservableFeature();
// eventFeature.setName("Event");
// eventOV.setFeature(eventFeature);
// eventOV.setInvestigation(investigation);
// eventOV.setTarget(cdnaVariant);
// eventOV.setValue(mutationUploadDTO.getEvent());
// observedValueList.add(eventOV);
//
// ObservedValue ntchangeOV = new ObservedValue();
// ObservableFeature ntchangeFeature = new ObservableFeature();
// ntchangeFeature.setName("NT change");
// ntchangeOV.setFeature(ntchangeFeature);
// ntchangeOV.setInvestigation(investigation);
// ntchangeOV.setTarget(cdnaVariant);
// ntchangeOV.setValue(mutationUploadDTO.getNtChange());
// observedValueList.add(ntchangeOV);
//
// patient.getMutations().add(cdnaVariant);
// }
// else
// {
// patient.getMutations().add(results.get(0));
// }
// }
// }
//
// // Add publications
// if (StringUtils.isNotEmpty(tuple.getString("PubMed ID")))
// {
// for (String pubmedString : tuple.getString("PubMed ID").split("[,;]"))
// {
// pubmedString = StringUtils.deleteWhitespace(pubmedString);
//
// List<Publication> results =
// db.query(Publication.class).equals(Publication.NAME,
// pubmedString).find();
//
// if (results.size() < 1)
// {
// pubmedStringList.add(pubmedString);
//
// Publication publication = new Publication();
// publication.setName(pubmedString);
//
// patient.getPatientreferences().add(publication);
// }
// else
// {
// patient.getPatientreferences().add(results.get(0));
// }
// }
// }
//
// // Add observed values for patients
//
// for (String patientValueCol : patientValueCols)
// {
// String value = ObjectUtils.toString(tuple.getString(patientValueCol),
// "unknown");
//
// ObservedValue observedValue = new ObservedValue();
// ObservableFeature feature = new ObservableFeature();
// feature.setName(patientValueCol);
// observedValue.setFeature(feature);
// observedValue.setInvestigation(investigation);
// observedValue.setTarget(patient);
// observedValue.setValue(value);
//
// observedValueList.add(observedValue);
// }
//
// patientList.put(patient.getName(), patient);
// }
//
// int counter = 0;
//
// // Now finally import everything
//
// // counter += db.add(Arrays.asList(alternateIdList.toArray(new
// AlternateId[alternateIdList.size()])));
// counter += db.add(Arrays.asList(alternateIdList.values().toArray(new
// AlternateId[0])));
//
// // resolve foreign keys for sequenceCharacteristicList
//
// List<Variant> resolvedVariantList = new ArrayList<Variant>();
//
// for (Variant variant : variantList.values())
// {
// if (CollectionUtils.isNotEmpty(variant.getAlternateId()))
// {
// List<AlternateId> resolvedAlternateIdList = new ArrayList<AlternateId>();
//
// for (AlternateId alternateId : variant.getAlternateId())
// {
// if (!em.contains(alternateId))
// {
// List<AlternateId> tmpList =
// db.query(AlternateId.class).equals(AlternateId.NAME,
// alternateId.getName()).find();
//
// if (tmpList.size() > 0)
// alternateId = tmpList.get(0);
// }
// resolvedAlternateIdList.add(alternateId);
// }
// variant.setAlternateId(resolvedAlternateIdList);
// }
// resolvedVariantList.add(variant);
// }
//
// counter += db.add(resolvedVariantList);
//
// // resolve foreign keys for sequenceRelationList
//
// List<SequenceRelation> resolvedSequenceRelationList = new
// ArrayList<SequenceRelation>();
//
// for (SequenceRelation relation : sequenceRelationList)
// {
// if (relation.getSequenceFeature() != null)
// {
// List<SequenceCharacteristic> sequenceFeatureList =
// db.query(SequenceCharacteristic.class).equals(SequenceCharacteristic.NAME,
// relation.getSequenceFeature().getName()).find();
//
// if (sequenceFeatureList.size() == 1)
// {
// relation.setFeature(sequenceFeatureList.get(0));
// relation.setSequenceFeature(sequenceFeatureList.get(0));
// }
// }
// if (relation.getSequenceTarget()!= null)
// {
// List<SequenceCharacteristic> sequenceTargetList =
// db.query(SequenceCharacteristic.class).equals(SequenceCharacteristic.NAME,
// relation.getSequenceTarget().getName()).find();
//
// if (sequenceTargetList.size() == 1)
// {
// relation.setSequenceTarget(sequenceTargetList.get(0));
// relation.setTarget(sequenceTargetList.get(0));
// }
// }
// resolvedSequenceRelationList.add(relation);
// }
//
// counter += db.add(resolvedSequenceRelationList);
//
// // resolve foreign keys for pubmedStringList
//
// if (pubmedStringList.size() > 0)
// {
// List<Publication> publicationList =
// publicationService.pubmedIdListToPublicationList(Arrays.asList(pubmedStringList.toArray(new
// String[pubmedStringList.size()])));
// counter += db.add(publicationList);
// }
//
// // resolve foreign keys for patientList
//
// List<Patient> resolvedPatientList = new ArrayList<Patient>();
//
// for (Patient patient : patientList.values())
// {
// if (CollectionUtils.isNotEmpty(patient.getAlternateId()))
// {
// List<AlternateId> resolvedAlternateIdList = new ArrayList<AlternateId>();
//
// for (AlternateId alternateId : patient.getAlternateId())
// {
// if (!em.contains(alternateId))
// {
// List<AlternateId> tmpList =
// db.query(AlternateId.class).equals(AlternateId.NAME,
// alternateId.getName()).find();
//
// if (tmpList.size() > 0)
// {
// alternateId = tmpList.get(0);
// }
// }
// resolvedAlternateIdList.add(alternateId);
// }
// patient.setAlternateId(resolvedAlternateIdList);
// }
// if (CollectionUtils.isNotEmpty(patient.getMutations()))
// {
// List<Variant> resolvedMutationList = new ArrayList<Variant>();
//
// for (Variant variant : patient.getMutations())
// {
// if (!em.contains(variant))
// {
// List<Variant> tmpList = db.query(Variant.class).equals(Variant.NAME,
// variant.getName()).find();
//
// if (tmpList.size() == 1)
// {
// variant = tmpList.get(0);
// }
// }
// resolvedMutationList.add(variant);
// }
// patient.setMutations(resolvedMutationList);
// }
// if (CollectionUtils.isNotEmpty(patient.getPatientreferences()))
// {
// List<Publication> resolvedPublicationList = new ArrayList<Publication>();
//
// for (Publication publication : patient.getPatientreferences())
// {
// if (!em.contains(publication))
// {
// List<Publication> tmpList =
// db.query(Publication.class).equals(Publication.NAME,
// publication.getName()).find();
//
// if (tmpList.size() == 1)
// {
// publication = tmpList.get(0);
// }
// }
// resolvedPublicationList.add(publication);
// }
// patient.setPatientreferences(resolvedPublicationList);
// }
// resolvedPatientList.add(patient);
// }
//
// counter += db.add(resolvedPatientList);
//
// // resolve foreign keys for observedValueList
//
// List<ObservedValue> resolvedObservedValueList = new
// ArrayList<ObservedValue>();
//
// for (ObservedValue observedValue : observedValueList)
// {
// if (observedValue.getFeature() != null)
// {
// List<ObservableFeature> observableFeatureList =
// db.query(ObservableFeature.class).equals(ObservableFeature.NAME,
// observedValue.getFeature().getName()).find();
//
// if (observableFeatureList.size() == 1)
// observedValue.setFeature(observableFeatureList.get(0));
// }
// if (observedValue.getTarget() != null)
// {
// List<ObservationTarget> observationTargetList =
// db.query(ObservationTarget.class).equals(ObservationTarget.NAME,
// observedValue.getTarget().getName()).find();
//
// if (observationTargetList.size() == 1)
// observedValue.setTarget(observationTargetList.get(0));
// }
// resolvedObservedValueList.add(observedValue);
// }
//
// counter += db.add(resolvedObservedValueList);
//
// return counter;
// }
//
// /**
// * Imports UploadBatch from tab/comma delimited File
// * @param db database to import into
// * @param reader csv reader to load data from
// * @param defaults to set default values for each row
// * @param dbAction indicating wether to add,update,remove etc
// * @param missingValues indicating what value in the csv is treated as
// 'null' (e.g. "" or "NA")
// * @return number of elements imported
// */
// // public int importCsvOld(final Database db, CsvReader reader, final
// Tuple defaults, final DatabaseAction dbAction, final String
// missingValues) throws DatabaseException, IOException, Exception
// // {
// // //cache for entities of which xrefs couldn't be resolved (e.g. if
// there is a self-refence)
// // //these entities can be updated with their xrefs in a second round
// when all entities are in the database
// // //final List<UploadBatch> uploadBatchsMissingRefs = new
// ArrayList<UploadBatch>();
// //
// // db.beginTx();
// //
// // final UploadService uploadService =
// ServiceLocator.instance().getUploadService();
// //
// // final Submission submission = new Submission();
// // DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// // submission.setDate(dateFormat.format(new Date()));
// // submission.setReleasedate(dateFormat.format(new Date()));
// // submission.setIdentifier("S" + new Date());
// // List<Integer> submitters = new ArrayList<Integer>();
// // submitters.add(db.getSecurity().getUserId());
// // submission.setSubmitters_Id(submitters);
// // db.getEntityManager().persist(submission);
// //
// // //cache for objects to be imported from file (in batch)
// // final List<MutationUploadDTO> mutationUploadDTOList = new
// ArrayList<MutationUploadDTO>();
// // final List<ObservedValueDTO> observedValueDTOList = new
// ArrayList<ObservedValueDTO>();
// // final List<PatientUploadDTO> patientUploadDTOList = new
// ArrayList<PatientUploadDTO>();
// // final List<String> pubmedList = new ArrayList<String>();
// //
// // reader.setMissingValues(missingValues);
// // reader.parse(new CsvReaderListener()
// // {
// // Integer mutationIdentifier = uploadService.getMaxMutationIdentifier();
// // Integer patientIdentifier = uploadService.getMaxPatientIdentifier();
// //
// // public void handleLine(int lineNo, Tuple tuple) throws Exception
// // {
// // //parse object, setting defaults and values from file
// //
// // PatientUploadDTO patientUploadDTO = new PatientUploadDTO();
// //
// // patientIdentifier = patientIdentifier + 1;
// // patientUploadDTO.setPatientName("P" + patientIdentifier);
// //
// patientUploadDTO.setPatientLocalId(tuple.getString("ID CHARGE database"));
// // patientUploadDTO.setSubmissionId(submission.getId());
// //
// // // Add variants
// // patientUploadDTO.setVariantCdnaNotationList(new ArrayList<String>());
// //
// // if (StringUtils.isNotEmpty(tuple.getString("CHD7 c")))
// // {
// // String[] cdnaNotations = StringUtils.split(tuple.getString("CHD7 c"),
// ", ");
// // String[] aaNotations = StringUtils.split(tuple.getString("CHD7 p"),
// ", ");
// // String[] pathogenicities =
// StringUtils.split(tuple.getString("Pathogenicity"), ", ");
// // String[] mutationTypes =
// StringUtils.split(tuple.getString("Mutation type"), ", ");
// //
// // for (int i = 0; i < cdnaNotations.length; i++)
// // {
// // String cdnaNotation = cdnaNotations[i];
// // String aaNotation = (ArrayUtils.getLength(aaNotations) ==
// ArrayUtils.getLength(cdnaNotations) ? aaNotations[i] : "");
// // String pathogenicity = (ArrayUtils.getLength(pathogenicities) ==
// ArrayUtils.getLength(cdnaNotations) ? pathogenicities[i] : "");
// // String mutationType = (ArrayUtils.getLength(mutationTypes) ==
// ArrayUtils.getLength(cdnaNotations) ? mutationTypes[i] : "");
// //
// // MutationUploadDTO mutationUploadDTO = new MutationUploadDTO();
// // mutationUploadDTO.setCdnaNotation("c." + cdnaNotation);
// // uploadService.assignValuesFromNotation(mutationUploadDTO);
// // if (StringUtils.isNotEmpty(aaNotation))
// // mutationUploadDTO.setAaNotation("p." + aaNotation);
// // mutationUploadDTO.setConsequence("Unknown");
// // mutationUploadDTO.setInheritance(tuple.getString("Segregation"));
// //
// // mutationIdentifier = mutationIdentifier + 1;
// // mutationUploadDTO.setIdentifier("M" + mutationIdentifier);
// //
// mutationUploadDTO.setPathogenicity(StringUtils.lowerCase(pathogenicity));
// // mutationUploadDTO.setType(mutationType);
// //
// //
// patientUploadDTO.getVariantCdnaNotationList().add(mutationUploadDTO.getCdnaNotation());
// //
// // // Add to mutationUploadDTOList if it does not exist already
// //
// // List<SequenceCharacteristic> results =
// db.query(SequenceCharacteristic.class).equals(SequenceCharacteristic.NAME,
// mutationUploadDTO.getCdnaNotation()).find();
// //
// // if (results.size() == 0)
// // mutationUploadDTOList.add(mutationUploadDTO);
// // }
// // }
// //
// // // Add publications
// // if (tuple.getString("Pubmed ID") != null)
// // {
// // String[] pubmedStringList =
// tuple.getString("PubMed ID").split("[,;]");
// //
// // for (String pubmedString : pubmedStringList)
// // {
// // pubmedString = StringUtils.deleteWhitespace(pubmedString);
// //
// // patientUploadDTO.getPubmedStringList().add(pubmedString);
// //
// // // Add to publicationDTOList if it does not exists already
// // List<Publication> publicationList =
// db.query(Publication.class).equals(Publication.NAME,
// pubmedString).find();
// //
// // if (publicationList.size() == 0)
// // pubmedList.add(pubmedString);
// // }
// // }
// //
// // // Add phenotypic values
// // patientUploadDTO.setObservedValueDTOList(new
// ArrayList<ObservedValueDTO>());
// //
// // for (int i = 18; ; i++)
// // {
// // String colName = tuple.getColName(i);
// //
// // if (colName == null)
// // break;
// //
// // ObservedValueDTO observedValueDTO = new ObservedValueDTO();
// // FeatureDTO featureDTO = new FeatureDTO();
// // featureDTO.setFeatureName(colName);
// // observedValueDTO.setFeatureDTO(featureDTO);
// // observedValueDTO.setTargetName(patientUploadDTO.getPatientName());
// //
// observedValueDTO.setValue(ObjectUtils.toString(tuple.getString(colName),
// "unknown"));
// //
// // patientUploadDTO.getObservedValueDTOList().add(observedValueDTO);
// //
// // // Add to observedValueDTOList for insert
// //
// // observedValueDTOList.add(observedValueDTO);
// // }
// //
// // // Add to patientUploadDTOList
// // patientUploadDTOList.add(patientUploadDTO);
// // }
// // });
// //
// // PhenoService phenoService =
// ServiceLocator.instance().getPhenoService();
// // PublicationService publicationService =
// ServiceLocator.instance().getPublicationService();
// //
// // int counter = 0;
// // counter += uploadService.insert(mutationUploadDTOList.toArray(new
// MutationUploadDTO[0]));
// // counter +=
// publicationService.insert(publicationService.pubmedIdListToPublicationDTOList(pubmedList));
// // counter += uploadService.insert(patientUploadDTOList.toArray(new
// PatientUploadDTO[0]));
// // counter += phenoService.insert(observedValueDTOList);
// //
// // db.rollbackTx();
// //
// // return counter;
// // }
}