Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,14 @@ private <T> void setConfigEntry(ConfigOption option, T value) throws ConfigExcep
@Override
public abstract String toString();

public String readableConfig() {
StringBuilder sb = new StringBuilder();
for (ConfigEntry<?> entry : config) {
sb.append("Option: ").append(entry.option()).append("\tValue: ").append(entry.value()).append("\n");
}
return sb.toString();
}

public abstract Mode mode();

public LoggerHelper LOGGER() { return LOGGER; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ public EmptyInputSheetConfig(Arguments args, LoggerHelper logger) {

@Override
public String toString() { return "Empty Input Sheet Configuration"; }

@Override
public Mode mode() { return MODE; };
}
14 changes: 10 additions & 4 deletions src/main/java/org/awdevelopment/smithlab/data/Condition.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package org.awdevelopment.smithlab.data;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;

public class Condition {

private final String name;
private String name;
private final Set<Strain> strains;
private final Set<Sample> samples;

public Condition(String name) {
this.name = name;
this.strains = new HashSet<>();
this.samples = new HashSet<>();
this.strains = new LinkedHashSet<>();
this.samples = new LinkedHashSet<>();
}

public void setName(String name) {
this.name = name;
}

public void addStrain(Strain strain) {
Expand All @@ -37,4 +41,6 @@ public Set<Sample> getSamples() {
public String toString() {
return name;
}


}
14 changes: 11 additions & 3 deletions src/main/java/org/awdevelopment/smithlab/data/Strain.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
public class Strain {

private Condition condition;
private final String name;
private String name;
private final Set<Sample> samples;

public Strain(String name) {
this.name = name;
samples = new HashSet<>();
}

public void setName(String name) { this.name = name; }
public String getName() {
return name;
}
Expand All @@ -40,11 +41,18 @@ public boolean equals(Object obj) {
return false;
}
Strain strain = (Strain) obj;
return name.equals(strain.name) && condition.equals(strain.condition);
if (condition == null) {
if (strain.condition != null) {
return false;
}
} else if (!condition.equals(strain.condition)) {
return false;
}
return name.equals(strain.name);
}

@Override
public int hashCode() {
return name.hashCode() + condition.hashCode();
return name.hashCode() + (condition != null ? condition.hashCode() : 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.awdevelopment.smithlab.data.Condition;
import org.awdevelopment.smithlab.data.Strain;
import org.awdevelopment.smithlab.io.exceptions.NoDaysException;

import java.util.Set;

Expand All @@ -17,85 +16,20 @@ public class EmptyExperiment extends AbstractExperiment {
private final byte numDays;
private final boolean usingNumDays;

public EmptyExperiment(Set<Strain> strains, Set<Condition> conditions, byte numReplicates, byte[] days, byte numDays) throws NoDaysException {
public EmptyExperiment(Set<Condition> conditions, Set<Strain> strains, byte numReplicates, byte numConditions,
byte numStrains, boolean usingNumConditions, boolean usingNumStrains, byte[] days,
byte numDays, boolean usingNumDays) {
super(conditions, strains);
this.usingNumConditions = false;
this.usingNumStrains = false;
this.numConditions = (byte) conditions.size();
this.numStrains = (byte) strains.size();
this.numReplicates = numReplicates;
if (numDays <= 0 && days.length == 0) throw new NoDaysException();
else {
usingNumDays = numDays > 0;
if (usingNumDays) {
this.days = new byte[numDays];
this.numDays = numDays;
} else {
this.days = days;
this.numDays = (byte) days.length;
}
}
}

public EmptyExperiment(byte numStrains, byte numConditions, byte numReplicates, byte[] days, byte numDays) throws NoDaysException {
super(null, null);
this.usingNumConditions = true;
this.usingNumStrains = true;
this.numConditions = numConditions;
this.numStrains = numStrains;
this.numReplicates = numReplicates;
if (numDays <= 0 && days.length == 0) throw new NoDaysException();
else {
usingNumDays = numDays > 0;
if (usingNumDays) {
this.days = new byte[numDays];
this.numDays = numDays;
} else {
this.days = days;
this.numDays = (byte) days.length;
}
}
}

public EmptyExperiment(Set<Strain> strains, byte numConditions, byte numReplicates, byte[] days, byte numDays) throws NoDaysException {
super(null, strains);
this.usingNumConditions = false;
this.usingNumStrains = true;
this.numConditions = numConditions;
this.numStrains = (byte) strains.size();
this.numReplicates = numReplicates;
if (numDays <= 0 && days.length == 0) throw new NoDaysException();
else {
usingNumDays = numDays > 0;
if (usingNumDays) {
this.days = new byte[numDays];
this.numDays = numDays;
} else {
this.days = days;
this.numDays = (byte) days.length;
}
}
this.usingNumConditions = usingNumConditions;
this.usingNumStrains = usingNumStrains;
this.days = days;
this.numDays = numDays;
this.usingNumDays = usingNumDays;
}

public EmptyExperiment(byte numStrains, Set<Condition> conditions, byte numReplicates, byte[] days, byte numDays) throws NoDaysException {
super(conditions, null);
this.usingNumConditions = true;
this.usingNumStrains = false;
this.numConditions = (byte) conditions.size();
this.numStrains = numStrains;
this.numReplicates = numReplicates;
if (numDays <= 0 && days.length == 0) throw new NoDaysException();
else {
usingNumDays = numDays > 0;
if (usingNumDays) {
this.days = new byte[numDays];
this.numDays = numDays;
} else {
this.days = days;
this.numDays = (byte) days.length;
}
}
}

public byte getNumReplicates() { return numReplicates; }
public boolean hasNoDays() { return days.length == 0 && !usingNumDays; }
Expand All @@ -106,4 +40,37 @@ public EmptyExperiment(byte numStrains, Set<Condition> conditions, byte numRepli
public boolean usingNumStrains() { return usingNumStrains; }
public byte getNumConditions() { return numConditions; }
public byte getNumStrains() { return numStrains; }

public String readableExperiment() {
StringBuilder sb = new StringBuilder();
sb.append("Experiment with ");
if (usingNumStrains) {
sb.append(numStrains).append(" strains, ");
} else {
StringBuilder strainsList = new StringBuilder();
for (Strain strain : strains()) { strainsList.append(strain.getName()).append(", "); }
strainsList.setLength(Math.max(strainsList.length() - 2, 0)); // Remove trailing comma and space, if any
sb.append(strains().size()).append(" strains (").append(strainsList).append("), ");
}
if (usingNumConditions) {
sb.append(numConditions).append(" conditions, ");
} else {
StringBuilder conditionsList = new StringBuilder();
for (Condition condition : conditions()) { conditionsList.append(condition.getName()).append(", "); }
conditionsList.setLength(Math.max(conditionsList.length() - 2, 0)); // Remove trailing comma and space, if any
sb.append(conditions().size()).append(" conditions (").append(conditionsList).append("), ");
}
sb.append(numReplicates).append(" replicates");
if (usingNumDays) {
sb.append(", ").append(numDays).append(" days.");
} else if (days.length > 0) {
sb.append(", days: ");
for (byte day : days) {
sb.append(day).append(" ");
}
} else {
sb.append(".");
}
return sb.toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import javafx.stage.Stage;
import org.awdevelopment.smithlab.config.EmptyInputSheetConfig;
import org.awdevelopment.smithlab.gui.controllers.AbstractLabelController;
import org.awdevelopment.smithlab.gui.controllers.main.MainApplicationController;
import org.awdevelopment.smithlab.logging.LoggerHelper;

public class SceneLoader {
Expand All @@ -16,13 +17,17 @@ public static void loadScene(Stage stage, FXMLResourceType fxmlResourceType, Log
stage.show();
}

public static AbstractLabelController loadScene(Stage stage, FXMLResourceType fxmlResourceType, LoggerHelper logger, EmptyInputSheetConfig config) {
public static AbstractLabelController loadScene(Stage stage, FXMLResourceType fxmlResourceType, LoggerHelper logger,
EmptyInputSheetConfig config,
MainApplicationController mainController) {
FXMLResource fxmlResource = FXMLResourceLoader.load(fxmlResourceType, logger);
fxmlResource.controller().setLogger(logger);
((AbstractLabelController) fxmlResource.controller()).setConfig(config);
fxmlResource.controller().setup();
stage.setTitle(fxmlResourceType.getWindowTitle());
stage.setScene(fxmlResource.scene());
AbstractLabelController controller = (AbstractLabelController) fxmlResource.controller();
controller.setMainController(mainController);
stage.show();
return (AbstractLabelController) fxmlResource.controller();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
package org.awdevelopment.smithlab.gui.controllers;

import org.awdevelopment.smithlab.config.EmptyInputSheetConfig;
import org.awdevelopment.smithlab.gui.controllers.main.MainApplicationController;

public abstract class AbstractLabelController extends AbstractController {

private EmptyInputSheetConfig config;
private MainApplicationController mainController;

public AbstractLabelController() { super(); }

public void setConfig(EmptyInputSheetConfig config) {
this.config = config;
}

public void setMainController(MainApplicationController mainController) { this.mainController = mainController; }

public EmptyInputSheetConfig config() {
return config;
}

public MainApplicationController getMainController() { return mainController; }

}
Loading
Loading