Skip to content

Commit e550de0

Browse files
author
Michael Heinold
committed
Improve metdata table code.
Summary: Rename InputTable to MetadataTable Add startup option for Roddy, MDTs are now passed in via --usemetadatatable, the Roddy class is used to get the data. A preview diff for you to see what changed in the Core Merge branch 'develop' into metadataTable Test Plan: Partly unit tested Reviewers: kensche, warsow Differential Revision: https://tbi-cb14.inet.dkfz-heidelberg.de/D190
1 parent e012ddc commit e550de0

16 files changed

+303
-145
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.idea/workspace.xml
2+
out
23
RoddyCore/build
34
dist/bin/2*
45
dist/build

RoddyCore/src/de/dkfz/roddy/config/AnalysisConfigurationProxy.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
import java.util.Map;
1010

1111
/**
12-
* The AC Proxy is used to enable lazy loading of analyis configuration objects.
12+
* The AC Proxy is used to enable lazy loading of analyis configuration objects.
1313
* It encapsulates a real AC object.
14-
*
14+
* <p>
1515
* Created by michael on 20.03.15.
16-
*/
16+
*/
1717
public class AnalysisConfigurationProxy extends AnalysisConfiguration {
1818

1919
private AnalysisConfiguration analysisConfiguration;
@@ -36,7 +36,7 @@ public AnalysisConfigurationProxy(AnalysisConfiguration parentConfiguration, Str
3636
}
3737

3838
private synchronized AnalysisConfiguration checkAnalysisConfig() {
39-
if(analysisConfiguration == null) {
39+
if (analysisConfiguration == null) {
4040
analysisConfiguration = ConfigurationFactory.getInstance().lazyLoadAnalysisConfiguration(this);
4141
}
4242
return analysisConfiguration;
@@ -229,11 +229,15 @@ public RecursiveOverridableMapContainer getContainer(String id) {
229229
@Override
230230
public void setParent(Configuration c) {
231231
super.setParent(c);
232+
if (c != null)
233+
checkAnalysisConfig().setParent(c);
232234
}
233235

234236
@Override
235237
public void addParent(Configuration p) {
236238
super.addParent(p);
239+
if (p != null)
240+
checkAnalysisConfig().addParent(p);
237241
}
238242

239243
@Override

RoddyCore/src/de/dkfz/roddy/config/ConfigurationFactory.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -684,10 +684,9 @@ public class ConfigurationFactory {
684684
for (NodeChild analysis in nAnalyses.analysis) {
685685
String analysisID = extractAttributeText((NodeChild) analysis, "id");
686686
String analysisCfg = extractAttributeText((NodeChild) analysis, "configuration");
687-
AnalysisConfiguration ac = new AnalysisConfigurationProxy(parentConfiguration, analysisID, analysisCfg, analysis); //
687+
AnalysisConfiguration ac = new AnalysisConfigurationProxy(parentConfiguration, analysisID, analysisCfg, analysis);
688688
availableAnalyses[analysisID] = ac;
689689

690-
// availableAnalyses[analysisID] = ac;
691690
_loadAnalyses(analysis.subanalyses, ac).each {
692691
String k, AnalysisConfiguration subConfig ->
693692
availableAnalyses[analysisID + "-" + k] = subConfig;
@@ -742,14 +741,15 @@ public class ConfigurationFactory {
742741
String key = cvalueNode.@name.text();
743742
String value = cvalueNode.@value.text();
744743
String type = extractAttributeText(cvalueNode, "type", "string");
744+
List<String> tags = extractAttributeText(cvalueNode, "tags", null)?.split(StringConstants.COMMA);
745745

746746
//OK, here comes some sort of valuable hack. In the past it was so, that sometimes people forgot to set
747747
//any directory to "path". In case of the output directories, this was a bad thing! So we know about
748748
//this specific type of variable and just set it to path at any time.
749749
if (key.endsWith("OutputDirectory"))
750750
type = "path";
751751
String description = extractAttributeText(cvalueNode, "description");
752-
return new ConfigurationValue(config, key, value, type, description);
752+
return new ConfigurationValue(config, key, value, type, description, tags);
753753
}
754754

755755

RoddyCore/src/de/dkfz/roddy/config/ConfigurationValue.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public class ConfigurationValue implements RecursiveOverridableMapContainer.Iden
3434
* A description or comment for a configuration value.
3535
*/
3636
private final String description;
37+
private final List<String> tags = new LinkedList<>();
38+
3739
private boolean invalid = false;
3840

3941
public ConfigurationValue(String id, String value) {
@@ -49,15 +51,17 @@ public ConfigurationValue(String id, String value, String type) {
4951
}
5052

5153
public ConfigurationValue(Configuration config, String id, String value, String type) {
52-
this(config, id, value, type, "");
54+
this(config, id, value, type, "", null);
5355
}
5456

55-
public ConfigurationValue(Configuration config, String id, String value, String type, String description) {
57+
public ConfigurationValue(Configuration config, String id, String value, String type, String description, List<String> tags) {
5658
this.id = id;
5759
this.value = value;
5860
this.configuration = config;
5961
this.type = type;
6062
this.description = description;
63+
if (tags != null)
64+
this.tags.addAll(tags);
6165
}
6266

6367
public Configuration getConfiguration() {
@@ -115,7 +119,7 @@ public File toFile(Analysis analysis) {
115119

116120
if (userID != null)
117121
temp = replaceString(temp, "$USERNAME", userID);
118-
if( groupID != null)
122+
if (groupID != null)
119123
temp = replaceString(temp, "$USERGROUP", groupID);
120124

121125
String ud = FileSystemAccessProvider.getInstance().getUserDirectory().getAbsolutePath();
@@ -145,7 +149,7 @@ public File toFile(ExecutionContext context) {
145149
try {
146150
String temp = toFile(context.getAnalysis(), context.getDataSet()).getAbsolutePath();
147151
temp = checkAndCorrectPath(temp);
148-
if(value.startsWith("${DIR_BUNDLED_FILES}") || value.startsWith("${DIR_RODDY}"))
152+
if (value.startsWith("${DIR_BUNDLED_FILES}") || value.startsWith("${DIR_RODDY}"))
149153
temp = Roddy.getApplicationDirectory().getAbsolutePath() + FileSystemAccessProvider.getInstance().getPathSeparator() + temp;
150154

151155
if (temp.contains(ConfigurationConstants.CVALUE_PLACEHOLDER_EXECUTION_DIRECTORY)) {
@@ -228,7 +232,7 @@ public String toString() {
228232
String temp = value;
229233
if (configuration != null) {
230234
List<String> valueIDs = getIDsForParrentValues();
231-
for(String vName : valueIDs) {
235+
for (String vName : valueIDs) {
232236
if (configuration.getConfigurationValues().hasValue(vName))
233237
temp = temp.replace("${" + vName + '}', configuration.getConfigurationValues().get(vName).toString());
234238
}
@@ -253,6 +257,14 @@ public String getType() {
253257
return type;
254258
}
255259

260+
public List<String> getListOfTags() {
261+
return tags;
262+
}
263+
264+
public boolean hasTag(String tag) {
265+
return tags.contains(tag);
266+
}
267+
256268
public EnumerationValue getEnumerationValueType() {
257269
Enumeration enumeration = null;
258270
if (getConfiguration().getEnumerations().hasValue("cvalueType"))
@@ -339,7 +351,9 @@ public String getValue() {
339351
return value;
340352
}
341353

342-
public String getDescription() { return description; }
354+
public String getDescription() {
355+
return description;
356+
}
343357

344358
public boolean isQuoteOnConversionSet() {
345359
return quoteOnConversion;

RoddyCore/src/de/dkfz/roddy/core/DataSet.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,6 @@ public Project getProject() {
7575
return project;
7676
}
7777

78-
/**
79-
* Get the metadata table for this dataset.
80-
* @return
81-
*/
82-
public BaseMetadataTable getMetadataTable() {
83-
if(metadataTable == null)
84-
metadataTable = MetadataTableFactory.getTable().subsetByDataset(this.id);
85-
return metadataTable;
86-
}
8778
/**
8879
* Returns a folder like i.e. results_per_pid/ICGC_PCA0xxx
8980
*

RoddyCore/src/de/dkfz/roddy/core/ProjectFactory.groovy

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import de.dkfz.roddy.Roddy
66
import de.dkfz.roddy.StringConstants
77
import de.dkfz.roddy.client.cliclient.RoddyCLIClient;
88
import de.dkfz.roddy.config.*
9-
import de.dkfz.roddy.config.validation.XSDValidator;
9+
import de.dkfz.roddy.config.validation.XSDValidator
10+
import de.dkfz.roddy.execution.io.MetadataTableFactory;
1011
import de.dkfz.roddy.plugins.LibrariesFactory;
1112
import de.dkfz.roddy.tools.RoddyConversionHelperMethods;
1213
import de.dkfz.roddy.tools.Tuple2
@@ -250,6 +251,9 @@ public class ProjectFactory {
250251
} else if (analysis.getRuntimeService() == null) {
251252
throw new RuntimeException("There is no runtime service class set for the selected analysis. This has to be set in either the project configuration or the analysis configuration.");
252253
} else {
254+
255+
// Try to build up the metadata table from here on. Project and analysis are ready.
256+
MetadataTableFactory.getTable(analysis);
253257
return analysis;
254258
}
255259
}

RoddyCore/src/de/dkfz/roddy/core/RuntimeService.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public abstract class RuntimeService extends CacheProvider {
6464

6565
if(Roddy.isMetadataCLOptionSet()) {
6666

67-
BaseMetadataTable table = MetadataTableFactory.getTable()
67+
BaseMetadataTable table = MetadataTableFactory.getTable(analysis)
6868
List<String> _datasets = table.listDatasets();
6969
String pOut = analysis.getOutputBaseDirectory().getAbsolutePath() + File.separator;
7070
return _datasets.collect { new DataSet(analysis, it, new File(pOut + it)) }

0 commit comments

Comments
 (0)