PageRenderTime 72ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/pride-inspector/branches/development/src/main/java/uk/ac/ebi/pride/gui/component/metadata/MetaDataHelper.java

http://pride-toolsuite.googlecode.com/
Java | 341 lines | 232 code | 48 blank | 61 comment | 69 complexity | 62debef1770b92776b8315627d71c1a1 MD5 | raw file
  1. package uk.ac.ebi.pride.gui.component.metadata;
  2. import uk.ac.ebi.pride.data.core.*;
  3. import uk.ac.ebi.pride.gui.utils.Constants;
  4. import uk.ac.ebi.pride.util.NumberUtilities;
  5. import uk.ac.ebi.pride.util.RegExUtilities;
  6. import java.util.ArrayList;
  7. import java.util.Collection;
  8. import java.util.List;
  9. /**
  10. * Created by IntelliJ IDEA.
  11. * User: rwang
  12. * Date: 25-May-2010
  13. * Time: 10:52:22
  14. */
  15. public class MetaDataHelper {
  16. /**
  17. * Get general metadata into a collection of paraemters
  18. *
  19. * @param metaData
  20. * @return
  21. */
  22. public static Collection<Parameter> getGeneralContent(MetaData metaData) {
  23. Collection<Parameter> params = new ArrayList<Parameter>();
  24. // id
  25. addUserParam(params, Constants.ID, metaData.getId());
  26. // accession
  27. addUserParam(params, Constants.ACCESSION, metaData.getAccession());
  28. // version
  29. addUserParam(params, Constants.VERSION, metaData.getVersion());
  30. // add experiment related meta data
  31. if (metaData instanceof Experiment) {
  32. addUserParam(params, Constants.TITLE, ((Experiment) metaData).getTitle());
  33. addUserParam(params, Constants.SHORT_LABEL, ((Experiment) metaData).getShortLabel());
  34. addUserParam(params, Constants.CREATION_DATE, ((Experiment) metaData).getCreationDate());
  35. addUserParam(params, Constants.PUBLIC_DATE, ((Experiment) metaData).getPublicDate());
  36. }
  37. // additional parameters
  38. addParamGroup(params, metaData, Constants.EMPTY);
  39. return params;
  40. }
  41. public static Collection<Parameter> getParamGroup(ParamGroup paramGroup) {
  42. Collection<Parameter> params = new ArrayList<Parameter>();
  43. addParamGroup(params, paramGroup, Constants.EMPTY);
  44. return params;
  45. }
  46. public static Collection<Parameter> getSourceFile(SourceFile sourceFile) {
  47. Collection<Parameter> params = new ArrayList<Parameter>();
  48. // id
  49. addUserParam(params, Constants.ID, sourceFile.getId());
  50. // name
  51. addUserParam(params, Constants.NAME, sourceFile.getName());
  52. // path
  53. addUserParam(params, Constants.PATH, sourceFile.getPath());
  54. // additional parameters
  55. addParamGroup(params, sourceFile, Constants.EMPTY);
  56. return params;
  57. }
  58. public static Collection<Parameter> getSample(Sample sample) {
  59. Collection<Parameter> params = new ArrayList<Parameter>();
  60. // id
  61. addUserParam(params, Constants.ID, sample.getId());
  62. // name
  63. addUserParam(params, Constants.NAME, sample.getName());
  64. // additional parameters
  65. addParamGroup(params, sample, Constants.EMPTY);
  66. return params;
  67. }
  68. public static Collection<Parameter> getContact(ParamGroup contact) {
  69. Collection<Parameter> params = getParamGroup(contact);
  70. // iterate over all params, check for email addresses.
  71. for (Parameter param : params) {
  72. if (RegExUtilities.isValidEmail(param.getValue())) {
  73. String email = param.getValue();
  74. param.setValue("<html><head></head><body><a href='mailto:" + email + "'>" + email + "</a></body></html>");
  75. }
  76. }
  77. return params;
  78. }
  79. public static Collection<Parameter> getSoftware(Software software) {
  80. Collection<Parameter> params = new ArrayList<Parameter>();
  81. // id
  82. addUserParam(params, Constants.ID, software.getId());
  83. // name
  84. addUserParam(params, Constants.VERSION, software.getVersion());
  85. // additional parameters
  86. addParamGroup(params, software, Constants.EMPTY);
  87. return params;
  88. }
  89. public static Collection<Parameter> getScanSetting(ScanSetting scanSetting) {
  90. Collection<Parameter> params = new ArrayList<Parameter>();
  91. // id
  92. addUserParam(params, Constants.ID, scanSetting.getId());
  93. // source file id
  94. List<SourceFile> sourceFiles = scanSetting.getSourceFile();
  95. if (sourceFiles != null) {
  96. for (SourceFile sourceFile : sourceFiles) {
  97. addUserParam(params, Constants.SOURCE_FILE_ID, sourceFile.getId());
  98. }
  99. }
  100. // targets
  101. List<ParamGroup> targets = scanSetting.getTargets();
  102. if (targets != null) {
  103. for (int i = 0; i < targets.size(); i++) {
  104. String prefix = Constants.TARGET + " " + (i + 1) + " - ";
  105. addParamGroup(params, targets.get(i), prefix);
  106. }
  107. }
  108. // additional parameters
  109. addParamGroup(params, scanSetting, Constants.EMPTY);
  110. return params;
  111. }
  112. public static Collection<Parameter> getInstrumentConfiguration(InstrumentConfiguration instrument) {
  113. Collection<Parameter> params = new ArrayList<Parameter>();
  114. // id
  115. addUserParam(params, Constants.ID, instrument.getId());
  116. // scan settings
  117. ScanSetting scanSetting = instrument.getScanSetting();
  118. if (scanSetting != null) {
  119. addUserParam(params, Constants.SCAN_SETTING_ID, scanSetting.getId());
  120. }
  121. // software
  122. Software software = instrument.getSoftware();
  123. if (software != null) {
  124. addUserParam(params, Constants.SOFTWARE_ID, software.getId());
  125. }
  126. // source
  127. // source order
  128. InstrumentComponent source = instrument.getSource();
  129. if (source != null) {
  130. String sourcePrefix = Constants.SOURCE + " - ";
  131. //addUserParam(params, sourcePrefix + SharedLabels.ORDER, source.getOrder());
  132. addParamGroup(params, source, sourcePrefix);
  133. }
  134. // analyzer
  135. InstrumentComponent analyzer = instrument.getAnalyzer();
  136. if (analyzer != null) {
  137. String analyzerPrefix = Constants.ANALYZER + " - ";
  138. //addUserParam(params, analyzerPrefix + SharedLabels.ORDER, analyzer.getOrder());
  139. addParamGroup(params, analyzer, analyzerPrefix);
  140. }
  141. // source
  142. InstrumentComponent detector = instrument.getDetector();
  143. if (detector != null) {
  144. String detectorPrefix = Constants.DETECTOR + " - ";
  145. //addUserParam(params, detectorPrefix + SharedLabels.ORDER, detector.getOrder());
  146. addParamGroup(params, detector, detectorPrefix);
  147. }
  148. // additional parameters
  149. addParamGroup(params, instrument, Constants.EMPTY);
  150. return params;
  151. }
  152. public static Collection<Parameter> getDataProcessing(DataProcessing dataProc) {
  153. Collection<Parameter> params = new ArrayList<Parameter>();
  154. // id
  155. addUserParam(params, Constants.ID, dataProc.getId());
  156. // processing methods
  157. List<ProcessingMethod> proMethods = dataProc.getProcessingMethods();
  158. if (proMethods != null) {
  159. for (int i = 0; i < proMethods.size(); i++) {
  160. String prefix = Constants.PROCESSING_METHOD + " " + (i + 1) + " - ";
  161. ProcessingMethod proMethod = proMethods.get(i);
  162. // order
  163. //addUserParam(params, prefix + SharedLabels.ORDER, proMethod.getOrder());
  164. // software
  165. Software software = proMethod.getSoftware();
  166. if (software != null) {
  167. addUserParam(params, prefix + Constants.SOFTWARE_ID, software.getId());
  168. }
  169. // param group
  170. addParamGroup(params, proMethod, prefix);
  171. }
  172. }
  173. return params;
  174. }
  175. public static Collection<Parameter> getProtocol(Protocol protocol) {
  176. Collection<Parameter> params = new ArrayList<Parameter>();
  177. // id
  178. addUserParam(params, Constants.ID, protocol.getId());
  179. // name
  180. addUserParam(params, Constants.NAME, protocol.getName());
  181. // protocol steps
  182. List<ParamGroup> steps = protocol.getProtocolSteps();
  183. if (steps != null) {
  184. for (int i = 0; i < steps.size(); i++) {
  185. String prefix = Constants.PROTOCOL_STEP + " " + (i + 1) + " - ";
  186. ParamGroup step = steps.get(i);
  187. addParamGroup(params, step, prefix);
  188. }
  189. }
  190. // additaional param
  191. addParamGroup(params, protocol, Constants.EMPTY);
  192. return params;
  193. }
  194. public static Collection<Parameter> getReference(Reference reference) {
  195. Collection<Parameter> params = new ArrayList<Parameter>();
  196. // full reference
  197. addUserParam(params, Constants.FULL_REFERENCE, reference.getFullReference());
  198. // make a copy of the param group
  199. ParamGroup customParams = new ParamGroup();
  200. List<CvParam> originalCvParams = reference.getCvParams();
  201. if (originalCvParams != null) {
  202. customParams.addCvParams(originalCvParams);
  203. }
  204. List<UserParam> originalUserParams = reference.getUserParams();
  205. if (originalUserParams != null) {
  206. customParams.addUserParams(originalUserParams);
  207. }
  208. // find the pubmed cv param
  209. List<CvParam> cvParams = customParams.getCvParams();
  210. CvParam pubmedCvParam = null;
  211. CvParam doiCvParam = null;
  212. for (CvParam cvParam : cvParams) {
  213. if (cvParam.getCvLookupID().toLowerCase().equals("pubmed") || cvParam.getName().toLowerCase().equals("pubmed")) {
  214. pubmedCvParam = cvParam;
  215. } else if (cvParam.getCvLookupID().toLowerCase().equals("doi") || cvParam.getName().toLowerCase().equals("doi")) {
  216. doiCvParam = cvParam;
  217. }
  218. }
  219. // remove then set pubmed cv param
  220. if (pubmedCvParam != null) {
  221. customParams.removeCvParam(pubmedCvParam);
  222. // add pubmed cv param
  223. String acc = pubmedCvParam.getValue();
  224. if (acc == null || !NumberUtilities.isNumber(acc)) {
  225. acc = pubmedCvParam.getAccession();
  226. }
  227. if (acc != null || !NumberUtilities.isNumber(acc)) {
  228. String hyperLink = "<html><head></head><body><a href='http://www.ncbi.nlm.nih.gov/pubmed/" + acc + "'>" + acc + "</a></body></html>";
  229. CvParam newCvParam = new CvParam(acc, Constants.PUBMED, pubmedCvParam.getCvLookupID(),
  230. hyperLink, pubmedCvParam.getUnitAcc(), pubmedCvParam.getUnitName(), pubmedCvParam.getUnitCVLookupID());
  231. params.add(newCvParam);
  232. }
  233. }
  234. // remove then set doi cv param
  235. if (doiCvParam != null) {
  236. customParams.removeCvParam(doiCvParam);
  237. // add doi cv param
  238. String doi = doiCvParam.getValue();
  239. if (doi == null) {
  240. doi = doiCvParam.getAccession();
  241. }
  242. if (doi != null) {
  243. String hyperLink = "<html><head></head><body><a href='http://dx.doi.org/" + doi + "'>" + doi + "</a></body></html>";
  244. CvParam newCvParam = new CvParam(doi, Constants.DOI, doiCvParam.getCvLookupID(),
  245. hyperLink, doiCvParam.getUnitAcc(), doiCvParam.getUnitName(), doiCvParam.getUnitCVLookupID());
  246. params.add(newCvParam);
  247. }
  248. }
  249. // additional parameters
  250. addParamGroup(params, customParams, Constants.EMPTY);
  251. return params;
  252. }
  253. private static void addParamGroup(Collection<Parameter> params, ParamGroup paramGroup, String prefix) {
  254. if (paramGroup != null) {
  255. List<CvParam> cvParams = paramGroup.getCvParams();
  256. if (cvParams != null) {
  257. for (CvParam cvParam : cvParams) {
  258. String name = cvParam.getName();
  259. String value = cvParam.getValue();
  260. if (value == null || "".equals(value.trim())) {
  261. value = name;
  262. name = prefix + Constants.PARAMETER;
  263. } else {
  264. name = prefix + name;
  265. }
  266. params.add(new CvParam(cvParam.getAccession(), name, cvParam.getCvLookupID(),
  267. convertToHyperLink(value), cvParam.getUnitAcc(), cvParam.getUnitName(), cvParam.getUnitCVLookupID()));
  268. }
  269. }
  270. List<UserParam> userParams = paramGroup.getUserParams();
  271. if (userParams != null) {
  272. for (UserParam userParam : userParams) {
  273. params.add(new UserParam(prefix + userParam.getName(), userParam.getType(), convertToHyperLink(userParam.getValue()),
  274. userParam.getUnitAcc(), userParam.getUnitName(), userParam.getUnitCVLookupID()));
  275. }
  276. }
  277. }
  278. }
  279. private static String convertToHyperLink(String val) {
  280. if (val != null) {
  281. val = val.trim();
  282. if (val.startsWith("http") && !val.contains(" ")) {
  283. val = "<html><a href='" + val + "'> Link</a></html>";
  284. }
  285. }
  286. return val;
  287. }
  288. private static void addUserParam(Collection<Parameter> params, String name, Object value) {
  289. if (value != null) {
  290. params.add(new UserParam(name, null, value.toString(), null, null, null));
  291. }
  292. }
  293. }