From aa4ece0688f9388ac5179a429246f2cf40f274d6 Mon Sep 17 00:00:00 2001 From: Ivica Ceraj Date: Wed, 4 Sep 2013 16:29:46 -0400 Subject: [PATCH] Update. --- .classpath | 1 + .settings/com.google.gwt.eclipse.core.prefs | 2 +- .../genetics/Stargenetics_gwt_java.gwt.xml | 12 +- .../genetics}/beans/JavaBeans.gwt.xml | 2 +- .../genetics}/beans/PropertyChangeEvent.java | 2 +- .../beans/PropertyChangeListener.java | 3 +- .../beans/PropertyChangeSupport.java | 4 +- .../genetics}/beans/StringTokenizer.java | 2 +- .../client/Stargenetics_gwt_java.java | 131 +---- .../genetic/impl/CreatureSetImpl.java | 6 +- src/star/genetics/genetic/impl/RuleImpl.java | 2 +- src/star/genetics/parser/EngineParser.java | 46 ++ src/star/genetics/parser/GenomeParser.java | 75 +++ src/star/genetics/parser/ModelParser.java | 49 ++ .../genetics/parser/PhenotypeRulesParser.java | 45 ++ .../genetics/parser/VisualizerParser.java | 18 + .../genetics/utils/PropertyChangeRaiser.java | 3 +- .../star/genetics/tests/setupmodel.json | 64 +++ test/star/genetics/tests/SetupModel.java | 37 ++ test/star/genetics/tests/ToJSON.java | 40 ++ test/star/genetics/tests/setupmodel.json | 64 +++ ...4F90E89AD961B49B56FF39C9B0D4613.cache.html | 451 ---------------- ...7B3ED58228A47ADF3B6C2FCB2FEB64F.cache.html | 464 ----------------- ...A22CFA6C5FC806BE4E7675E10012783.cache.html | 475 ----------------- ...93DDC2D1A1CEE51C76F8F0BF233FC57.cache.html | 481 ----------------- ...915C834D89A24C70BF22596EC3F80A0.cache.html | 490 ------------------ ...B85208609937CB03861ACB89CBF33B8.cache.html | 463 ----------------- .../stargenetics_gwt_java.nocache.js | 18 - .../rpcPolicyManifest/manifest.txt | 2 + .../39D4114873E80B8BB2D606FE14058A3C.txt | 2 + .../A3FF39165C3DD226FF9F5022E50A1694.txt | 2 + .../250774B171C57E8BA39B144956DFE885.gwt.rpc | 69 +++ .../AF08CD0D494A2913F68E033D78EC60B1.gwt.rpc | 68 +++ .../clear.cache.gif | Bin .../gwt/clean/clean.css | 0 .../gwt/clean/clean_rtl.css | 0 .../gwt/clean/images/circles.png | Bin .../gwt/clean/images/circles_ie6.png | Bin .../gwt/clean/images/corner.png | Bin .../gwt/clean/images/corner_ie6.png | Bin .../gwt/clean/images/hborder.png | Bin .../gwt/clean/images/hborder_ie6.png | Bin .../gwt/clean/images/thumb_horz.png | Bin .../gwt/clean/images/thumb_vertical.png | Bin .../gwt/clean/images/vborder.png | Bin .../gwt/clean/images/vborder_ie6.png | Bin .../hosted.html | 0 .../junit-standards.html | 68 +++ .../junit.html | 66 +++ ...ics.StarGenetics_gwt_java.JUnit.nocache.js | 17 + 50 files changed, 765 insertions(+), 2979 deletions(-) rename src/{java => star/genetics}/beans/JavaBeans.gwt.xml (81%) rename src/{java => star/genetics}/beans/PropertyChangeEvent.java (94%) rename src/{java => star/genetics}/beans/PropertyChangeListener.java (77%) rename src/{java => star/genetics}/beans/PropertyChangeSupport.java (83%) rename src/{java => star/genetics}/beans/StringTokenizer.java (94%) create mode 100644 src/star/genetics/parser/EngineParser.java create mode 100644 src/star/genetics/parser/GenomeParser.java create mode 100644 src/star/genetics/parser/ModelParser.java create mode 100644 src/star/genetics/parser/PhenotypeRulesParser.java create mode 100644 src/star/genetics/parser/VisualizerParser.java create mode 100644 test-classes/star/genetics/tests/setupmodel.json create mode 100644 test/star/genetics/tests/SetupModel.java create mode 100644 test/star/genetics/tests/ToJSON.java create mode 100644 test/star/genetics/tests/setupmodel.json delete mode 100644 war/stargenetics_gwt_java/A4F90E89AD961B49B56FF39C9B0D4613.cache.html delete mode 100644 war/stargenetics_gwt_java/A7B3ED58228A47ADF3B6C2FCB2FEB64F.cache.html delete mode 100644 war/stargenetics_gwt_java/DA22CFA6C5FC806BE4E7675E10012783.cache.html delete mode 100644 war/stargenetics_gwt_java/E93DDC2D1A1CEE51C76F8F0BF233FC57.cache.html delete mode 100644 war/stargenetics_gwt_java/F915C834D89A24C70BF22596EC3F80A0.cache.html delete mode 100644 war/stargenetics_gwt_java/FB85208609937CB03861ACB89CBF33B8.cache.html delete mode 100644 war/stargenetics_gwt_java/stargenetics_gwt_java.nocache.js create mode 100644 www-test/WEB-INF/deploy/star.genetics.StarGenetics_gwt_java.JUnit/rpcPolicyManifest/manifest.txt create mode 100644 www-test/WEB-INF/deploy/star.genetics.StarGenetics_gwt_java.JUnit/rpcPolicyManifest/manifests/39D4114873E80B8BB2D606FE14058A3C.txt create mode 100644 www-test/WEB-INF/deploy/star.genetics.StarGenetics_gwt_java.JUnit/rpcPolicyManifest/manifests/A3FF39165C3DD226FF9F5022E50A1694.txt create mode 100644 www-test/star.genetics.StarGenetics_gwt_java.JUnit/250774B171C57E8BA39B144956DFE885.gwt.rpc create mode 100644 www-test/star.genetics.StarGenetics_gwt_java.JUnit/AF08CD0D494A2913F68E033D78EC60B1.gwt.rpc rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/clear.cache.gif (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/clean.css (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/clean_rtl.css (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/circles.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/circles_ie6.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/corner.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/corner_ie6.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/hborder.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/hborder_ie6.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/thumb_horz.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/thumb_vertical.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/vborder.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/gwt/clean/images/vborder_ie6.png (100%) rename {war/stargenetics_gwt_java => www-test/star.genetics.StarGenetics_gwt_java.JUnit}/hosted.html (100%) create mode 100644 www-test/star.genetics.StarGenetics_gwt_java.JUnit/junit-standards.html create mode 100644 www-test/star.genetics.StarGenetics_gwt_java.JUnit/junit.html create mode 100644 www-test/star.genetics.StarGenetics_gwt_java.JUnit/star.genetics.StarGenetics_gwt_java.JUnit.nocache.js diff --git a/.classpath b/.classpath index a77e904..ee238e1 100644 --- a/.classpath +++ b/.classpath @@ -4,5 +4,6 @@ + diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs index b898189..59b0b5f 100644 --- a/.settings/com.google.gwt.eclipse.core.prefs +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -1,3 +1,3 @@ eclipse.preferences.version=1 filesCopiedToWebInfLib=gwt-servlet.jar -gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+VFJBQ0U8L2xvZy1sZXZlbD48b3V0cHV0LXN0eWxlPk9CRlVTQ0FURUQ8L291dHB1dC1zdHlsZT48ZXh0cmEtYXJncz48IVtDREFUQVtdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDUxMm1dXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5zdGFyLmdlbmV0aWNzLlN0YXJnZW5ldGljc19nd3RfamF2YTwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+ +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+REVCVUc8L2xvZy1sZXZlbD48b3V0cHV0LXN0eWxlPk9CRlVTQ0FURUQ8L291dHB1dC1zdHlsZT48ZXh0cmEtYXJncz48IVtDREFUQVtdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDUxMm1dXT48L3ZtLWFyZ3M+PGVudHJ5LXBvaW50LW1vZHVsZT5zdGFyLmdlbmV0aWNzLlN0YXJnZW5ldGljc19nd3RfamF2YTwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+ diff --git a/src/star/genetics/Stargenetics_gwt_java.gwt.xml b/src/star/genetics/Stargenetics_gwt_java.gwt.xml index 000498d..e168c8d 100644 --- a/src/star/genetics/Stargenetics_gwt_java.gwt.xml +++ b/src/star/genetics/Stargenetics_gwt_java.gwt.xml @@ -7,18 +7,18 @@ "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd"> - + + + - + --> - - @@ -29,5 +29,7 @@ - + + + diff --git a/src/java/beans/JavaBeans.gwt.xml b/src/star/genetics/beans/JavaBeans.gwt.xml similarity index 81% rename from src/java/beans/JavaBeans.gwt.xml rename to src/star/genetics/beans/JavaBeans.gwt.xml index 1836147..bdfd4d3 100644 --- a/src/java/beans/JavaBeans.gwt.xml +++ b/src/star/genetics/beans/JavaBeans.gwt.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/src/java/beans/PropertyChangeEvent.java b/src/star/genetics/beans/PropertyChangeEvent.java similarity index 94% rename from src/java/beans/PropertyChangeEvent.java rename to src/star/genetics/beans/PropertyChangeEvent.java index ca35931..d5fddb7 100644 --- a/src/java/beans/PropertyChangeEvent.java +++ b/src/star/genetics/beans/PropertyChangeEvent.java @@ -1,4 +1,4 @@ -package java.beans; +package star.genetics.beans; public class PropertyChangeEvent { diff --git a/src/java/beans/PropertyChangeListener.java b/src/star/genetics/beans/PropertyChangeListener.java similarity index 77% rename from src/java/beans/PropertyChangeListener.java rename to src/star/genetics/beans/PropertyChangeListener.java index 9c1e482..1809b7e 100644 --- a/src/java/beans/PropertyChangeListener.java +++ b/src/star/genetics/beans/PropertyChangeListener.java @@ -1,7 +1,6 @@ -package java.beans; +package star.genetics.beans; public interface PropertyChangeListener { public void propertyChange(PropertyChangeEvent e); - } diff --git a/src/java/beans/PropertyChangeSupport.java b/src/star/genetics/beans/PropertyChangeSupport.java similarity index 83% rename from src/java/beans/PropertyChangeSupport.java rename to src/star/genetics/beans/PropertyChangeSupport.java index ecb47c8..458bdf6 100644 --- a/src/java/beans/PropertyChangeSupport.java +++ b/src/star/genetics/beans/PropertyChangeSupport.java @@ -1,4 +1,4 @@ -package java.beans; +package star.genetics.beans; import java.util.ArrayList; @@ -22,7 +22,7 @@ public void firePropertyChange(PropertyChangeEvent propertyChangeEvent) } - public void addPropertyChangeListener(PropertyChangeListener listener) + public void addPropertyChangeListener(star.genetics.beans.PropertyChangeListener listener) { listeners.add(listener); } diff --git a/src/java/beans/StringTokenizer.java b/src/star/genetics/beans/StringTokenizer.java similarity index 94% rename from src/java/beans/StringTokenizer.java rename to src/star/genetics/beans/StringTokenizer.java index 724ae68..d6508d8 100644 --- a/src/java/beans/StringTokenizer.java +++ b/src/star/genetics/beans/StringTokenizer.java @@ -1,4 +1,4 @@ -package java.beans; +package star.genetics.beans; public class StringTokenizer { diff --git a/src/star/genetics/client/Stargenetics_gwt_java.java b/src/star/genetics/client/Stargenetics_gwt_java.java index a3a7c51..05fb320 100644 --- a/src/star/genetics/client/Stargenetics_gwt_java.java +++ b/src/star/genetics/client/Stargenetics_gwt_java.java @@ -10,20 +10,6 @@ import star.genetics.shared.FieldVerifier; import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.event.dom.client.KeyCodes; -import com.google.gwt.event.dom.client.KeyUpEvent; -import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.DialogBox; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.RootPanel; -import com.google.gwt.user.client.ui.TextBox; -import com.google.gwt.user.client.ui.VerticalPanel; /** * Entry point classes define onModuleLoad(). @@ -44,9 +30,9 @@ public void test2() test(self, me); } - public static int add(int a,int b) + public static String add(int a,int b) { - return a+b; + return "" + a+b; } public native void test(Object self, MatingEngine me) @@ -54,6 +40,7 @@ public native void test(Object self, MatingEngine me) $wnd.__sg_entry_point = self; $wnd.__sg_me = me; $wnd.__sg_add = $entry(@star.genetics.client.Stargenetics_gwt_java::add(II)); + console.info( "Done!" ); return "Not A Number"; }-*/; @@ -62,108 +49,14 @@ public native void test(Object self, MatingEngine me) */ public void onModuleLoad() { - final Button sendButton = new Button("Send"); - final TextBox nameField = new TextBox(); - nameField.setText("GWT User"); - final Label errorLabel = new Label(); - - // We can add style names to widgets - sendButton.addStyleName("sendButton"); - - // Add the nameField and sendButton to the RootPanel - // Use RootPanel.get() to get the entire body element - RootPanel.get("nameFieldContainer").add(nameField); - RootPanel.get("sendButtonContainer").add(sendButton); - RootPanel.get("errorLabelContainer").add(errorLabel); - - // Focus the cursor on the name field when the app loads - nameField.setFocus(true); - nameField.selectAll(); - - // Create the popup dialog box - final DialogBox dialogBox = new DialogBox(); - dialogBox.setText("Remote Procedure Call"); - dialogBox.setAnimationEnabled(true); - final Button closeButton = new Button("Close"); - // We can set the id of a widget by accessing its Element - closeButton.getElement().setId("closeButton"); - final Label textToServerLabel = new Label(); - final HTML serverResponseLabel = new HTML(); - VerticalPanel dialogVPanel = new VerticalPanel(); - dialogVPanel.addStyleName("dialogVPanel"); - dialogVPanel.add(new HTML("Sending name to the server:")); - dialogVPanel.add(textToServerLabel); - dialogVPanel.add(new HTML("
Server replies:")); - dialogVPanel.add(serverResponseLabel); - dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT); - dialogVPanel.add(closeButton); - dialogBox.setWidget(dialogVPanel); - test2(); - // Add a handler to close the DialogBox - closeButton.addClickHandler(new ClickHandler() - { - public void onClick(ClickEvent event) - { - dialogBox.hide(); - sendButton.setEnabled(true); - sendButton.setFocus(true); - - } - }); - - // Create a handler for the sendButton and nameField - class MyHandler implements ClickHandler, KeyUpHandler - { - /** - * Fired when the user clicks on the sendButton. - */ - public void onClick(ClickEvent event) - { - sendNameToServer(); - MatingEngineImpl_XY xy = new MatingEngineImpl_XY(); - ModelImpl impl = new ModelImpl(); - GenomeImpl genome = new GenomeImpl(); - ChromosomeImpl c = new ChromosomeImpl("name", genome); - GeneImpl g = new GeneImpl("test", 2, c); - impl.setGenome(genome); - System.out.println(impl); - } - - /** - * Fired when the user types in the nameField. - */ - public void onKeyUp(KeyUpEvent event) - { - if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) - { - sendNameToServer(); - } - } - - /** - * Send the name from the nameField to the server and wait for a response. - */ - private void sendNameToServer() - { - // First, we validate the input. - errorLabel.setText(""); - String textToServer = nameField.getText(); - if (!FieldVerifier.isValidName(textToServer)) - { - errorLabel.setText("Please enter at least four characters"); - return; - } - - // Then, we send the input to the server. - sendButton.setEnabled(false); - textToServerLabel.setText(textToServer); - serverResponseLabel.setText(""); - } - } - - // Add a handler to send the name to the server - MyHandler handler = new MyHandler(); - sendButton.addClickHandler(handler); - nameField.addKeyUpHandler(handler); + MatingEngineImpl_XY xy = new MatingEngineImpl_XY(); + ModelImpl impl = new ModelImpl(); + GenomeImpl genome = new GenomeImpl(); + ChromosomeImpl c = new ChromosomeImpl("name", genome); + GeneImpl g = new GeneImpl("test", 2, c); + impl.setGenome(genome); + impl.setMater(xy); + System.out.println(impl); + test(this,xy); } } diff --git a/src/star/genetics/genetic/impl/CreatureSetImpl.java b/src/star/genetics/genetic/impl/CreatureSetImpl.java index c3e1099..fa13402 100644 --- a/src/star/genetics/genetic/impl/CreatureSetImpl.java +++ b/src/star/genetics/genetic/impl/CreatureSetImpl.java @@ -1,12 +1,12 @@ package star.genetics.genetic.impl; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; +import star.genetics.beans.PropertyChangeEvent; +import star.genetics.beans.PropertyChangeListener; +import star.genetics.beans.PropertyChangeSupport; import star.genetics.genetic.model.Creature; public class CreatureSetImpl implements star.genetics.genetic.model.CreatureSet, Serializable diff --git a/src/star/genetics/genetic/impl/RuleImpl.java b/src/star/genetics/genetic/impl/RuleImpl.java index 4566c27..dd9a8ec 100644 --- a/src/star/genetics/genetic/impl/RuleImpl.java +++ b/src/star/genetics/genetic/impl/RuleImpl.java @@ -3,8 +3,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; -import java.beans.StringTokenizer; +import star.genetics.beans.StringTokenizer; import star.genetics.client.Messages; import star.genetics.genetic.model.Allele; import star.genetics.genetic.model.Chromosome; diff --git a/src/star/genetics/parser/EngineParser.java b/src/star/genetics/parser/EngineParser.java new file mode 100644 index 0000000..3f1fc11 --- /dev/null +++ b/src/star/genetics/parser/EngineParser.java @@ -0,0 +1,46 @@ +package star.genetics.parser; + +import com.google.gwt.json.client.JSONNumber; +import com.google.gwt.json.client.JSONObject; + +import star.genetics.genetic.impl.MatingEngineImpl_XY; +import star.genetics.genetic.impl.ModelImpl; + +public class EngineParser +{ + public static void parse(ModelImpl model, JSONObject engine) + { + String sex_type = engine.get("sex_type").isString().toString(); + if ("xy".equalsIgnoreCase(sex_type)) + { + parse_XY(model, engine); + } + } + + private static float get(JSONObject obj, String key, float default_value) + { + float ret = default_value; + if (obj.containsKey(key)) + { + JSONNumber n = obj.get(key).isNumber(); + if (n != null) + { + ret = (float) n.doubleValue(); + } + } + return ret; + } + + private static void parse_XY(ModelImpl model, JSONObject engine) + { + float maleRecombinationRate = get(engine, "male_recombination_rate", 1.0f); + float femaleRecombinationRate = get(engine, "female_recombination_rate", 1.0f); + float femaleSexRatio = get(engine, "female_sex_ratio", 1.0f); + int progeniesCount = Math.round(get(engine, "avg_offspring_count", 50.0f)); + float twinningFrequency = get(engine, "twinning", 0.0f); + float identicalTwinsFrequency = get(engine, "identical_twins_frequency", 0.0f); + + MatingEngineImpl_XY xy = new MatingEngineImpl_XY(maleRecombinationRate, femaleRecombinationRate, femaleSexRatio, progeniesCount, twinningFrequency, identicalTwinsFrequency); + model.setMater(xy); + } +} diff --git a/src/star/genetics/parser/GenomeParser.java b/src/star/genetics/parser/GenomeParser.java new file mode 100644 index 0000000..c726143 --- /dev/null +++ b/src/star/genetics/parser/GenomeParser.java @@ -0,0 +1,75 @@ +package star.genetics.parser; + +import star.genetics.genetic.impl.AlleleImpl; +import star.genetics.genetic.impl.ChromosomeImpl; +import star.genetics.genetic.impl.GeneImpl; +import star.genetics.genetic.impl.GenomeImpl; +import star.genetics.genetic.impl.ModelImpl; + +import com.google.gwt.json.client.JSONArray; +import com.google.gwt.json.client.JSONObject; + +public class GenomeParser +{ + + public static void parse(ModelImpl model, JSONObject genome) + { + GenomeImpl ret = new GenomeImpl(); + parseChromosomes( ret , genome.get("chromosomes").isObject()); + model.setGenome(ret); + } + + + private static void parseChromosomes(GenomeImpl genome, JSONObject chromosomes) + { + for( String chromosome_id : chromosomes.keySet() ) { + ChromosomeImpl c = new ChromosomeImpl(chromosome_id, genome); + parseChromosome( c, chromosomes.get(chromosome_id).isObject() ); + } + } + + + private static void parseChromosome(ChromosomeImpl c, JSONObject chromosome) + { + String name = chromosome.get("name").isString().toString(); + parseGenes( c , chromosome.get("genes").isArray()); + } + + + private static void parseGenes(ChromosomeImpl c, JSONArray genes) + { + for( int i = 0 ; i < genes.size() ; i++) + { + JSONObject gene = genes.get(i).isObject(); + parseGene( c , gene ); + } + + } + + + private static void parseGene(ChromosomeImpl c, JSONObject gene) + { + String name = gene.get("name").isString().toString(); + float position = (float)gene.get("position").isNumber().doubleValue(); + GeneImpl g = new GeneImpl(name, position, c); + parseAlleles( g , gene.get("alleles").isArray()); + } + + + private static void parseAlleles(GeneImpl gene, JSONArray alleles) + { + for( int i = 0 ; i < alleles.size() ; i++ ) + { + parseAllele( gene , alleles.get(i).isObject()); + } + } + + + private static void parseAllele(GeneImpl gene, JSONObject allele) + { + String name = allele.get("name").isString().toString(); + AlleleImpl a = new AlleleImpl(name, gene); + } + + +} diff --git a/src/star/genetics/parser/ModelParser.java b/src/star/genetics/parser/ModelParser.java new file mode 100644 index 0000000..9fede9b --- /dev/null +++ b/src/star/genetics/parser/ModelParser.java @@ -0,0 +1,49 @@ +package star.genetics.parser; + +import com.google.gwt.json.client.JSONArray; +import com.google.gwt.json.client.JSONObject; +import com.google.gwt.json.client.JSONParser; +import com.google.gwt.json.client.JSONValue; + +import star.genetics.genetic.impl.AlleleImpl; +import star.genetics.genetic.impl.ChromosomeImpl; +import star.genetics.genetic.impl.GeneImpl; +import star.genetics.genetic.impl.GenomeImpl; +import star.genetics.genetic.impl.ModelImpl; +import star.genetics.genetic.model.Model; + +public class ModelParser +{ + static JSONObject getTop(String json) + { + JSONValue top = JSONParser.parseStrict(json); + return top.isObject(); + } + + + private static void parse(ModelImpl model, JSONObject top) + { + parseGenetics( model , top.get("genetics").isObject()); + } + + + private static void parseGenetics(ModelImpl model, JSONObject genetics) + { + VisualizerParser.parse( model, genetics.get("visualizer").isObject()); + GenomeParser.parse(model,genetics.get("genome").isObject()); + EngineParser.parse(model,genetics.get("engine").isObject()); + PhenotypeRulesParser.parse(model,genetics.get("phenotype_rules").isArray()); + } + + + + + public static Model parse( String json ) + { + ModelImpl model = new ModelImpl(); + JSONObject top = getTop(json); + parse( model, top ); + return model; + } + +} diff --git a/src/star/genetics/parser/PhenotypeRulesParser.java b/src/star/genetics/parser/PhenotypeRulesParser.java new file mode 100644 index 0000000..5f10c99 --- /dev/null +++ b/src/star/genetics/parser/PhenotypeRulesParser.java @@ -0,0 +1,45 @@ +package star.genetics.parser; + +import java.util.HashMap; + +import star.genetics.genetic.impl.ModelImpl; +import star.genetics.genetic.impl.RuleImpl; +import star.genetics.genetic.impl.RuleSetImpl; +import star.genetics.genetic.model.Genome; +import star.genetics.genetic.model.Rule; + +import com.google.gwt.json.client.JSONArray; +import com.google.gwt.json.client.JSONObject; + +public class PhenotypeRulesParser +{ + + public static void parse(ModelImpl model, JSONArray rules) + { + RuleSetImpl set = new RuleSetImpl(); + for( int i = 0 ; i < rules.size(); i++) + { + JSONObject rule = rules.get(i).isObject(); + set.add(parseRule( set , rule , model.getGenome())); + } + model.setRules(set); + } + + private static Rule parseRule(RuleSetImpl set, JSONObject rule, Genome genome) + { + String matches = rule.get("matches").isString().toString(); + HashMap phenotype = parsePhenotype( rule.get("phenotype").isObject()); + return new RuleImpl(matches, phenotype , genome) ; + } + + private static HashMap parsePhenotype(JSONObject object) + { + HashMap ret = new HashMap(); + for(String key : object.keySet() ) + { + ret.put( key , object.get(key).toString()); + } + return ret; + } + +} diff --git a/src/star/genetics/parser/VisualizerParser.java b/src/star/genetics/parser/VisualizerParser.java new file mode 100644 index 0000000..a1fa976 --- /dev/null +++ b/src/star/genetics/parser/VisualizerParser.java @@ -0,0 +1,18 @@ +package star.genetics.parser; + +import com.google.gwt.json.client.JSONObject; + +import star.genetics.genetic.impl.ModelImpl; + +public class VisualizerParser +{ + public static void parse(ModelImpl model, JSONObject visualizer) + { + String visualizer_name = visualizer.get("name").isString().stringValue(); + if("fly".equalsIgnoreCase(visualizer_name)) + { + model.setVisualizerClass("star.genetics.visualizers.Fly"); + } + } + +} diff --git a/src/star/genetics/utils/PropertyChangeRaiser.java b/src/star/genetics/utils/PropertyChangeRaiser.java index eb662ff..5276fd4 100644 --- a/src/star/genetics/utils/PropertyChangeRaiser.java +++ b/src/star/genetics/utils/PropertyChangeRaiser.java @@ -1,6 +1,7 @@ package star.genetics.utils; -import java.beans.PropertyChangeListener; +import star.genetics.beans.PropertyChangeListener; + /** * Adds support for addPropertyChangeListener and removePropertyChangeListener diff --git a/test-classes/star/genetics/tests/setupmodel.json b/test-classes/star/genetics/tests/setupmodel.json new file mode 100644 index 0000000..fc9b6b3 --- /dev/null +++ b/test-classes/star/genetics/tests/setupmodel.json @@ -0,0 +1,64 @@ +{ + "genetics": { + "visualizer": {"name":"fly"}, + "genome": { + "chromosomes": { + "C_1": { + "name": "Chromosome 1", + "genes": [ + { "name": "red_eyes", + "position": 25, + "alleles": [ + {"name": "A"}, + {"name": "a"} + ] + }, + { "name": "wingless", + "position": 40, + "alleles": [ + {"name": "B"}, + {"name": "b"} + ] + } + + ] + } + } + }, + "engine": { + "sex_type": "XY", + "male_recombination_rate": 1, + "female_recombination_rate": 1, + "female_sex_ratio":.51, + "twinning": 0, + "identical_twins_frequency": 0, + "avg_offspring_count": 50 + }, + "experiments": {}, + "phenotype_rules": [ + { "name": "default", + "matches": "*", + "phenotype": { + "wings": 1, + "eyes": "red" + } + }, + { + "name": "white eyes", + "matches": "aa", + "phenotype": { + "eyes": "white" + } + }, + { + "name": "wingless", + "matches": "bb", + "phenotype": { + "wings": 0 + } + } + ], + "gel_rules": {}, + "model_metadata": {} + } +} \ No newline at end of file diff --git a/test/star/genetics/tests/SetupModel.java b/test/star/genetics/tests/SetupModel.java new file mode 100644 index 0000000..419172a --- /dev/null +++ b/test/star/genetics/tests/SetupModel.java @@ -0,0 +1,37 @@ +package star.genetics.tests; + +import static org.junit.Assert.*; + +import org.json.JSONException; +import org.json.JSONObject; + +import star.genetics.genetic.model.Model; +import star.genetics.parser.ModelParser; + +import com.google.gwt.junit.client.GWTTestCase; + +public class SetupModel extends GWTTestCase +{ + String getJson() + { + // getJSON("setupmodel.json"); + return "{\"genetics\":{\"visualizer\":{\"name\":\"fly\"},\"model_metadata\":{},\"experiments\":{},\"engine\":{\"sex_type\":\"XY\",\"male_recombination_rate\":1,\"female_sex_ratio\":0.51,\"avg_offspring_count\":50,\"female_recombination_rate\":1,\"twinning\":0,\"identical_twins_frequency\":0},\"gel_rules\":{},\"phenotype_rules\":[{\"matches\":\"*\",\"name\":\"default\",\"phenotype\":{\"wings\":1,\"eyes\":\"red\"}},{\"matches\":\"aa\",\"name\":\"white eyes\",\"phenotype\":{\"eyes\":\"white\"}},{\"matches\":\"bb\",\"name\":\"wingless\",\"phenotype\":{\"wings\":0}}],\"genome\":{\"chromosomes\":{\"C_1\":{\"genes\":[{\"position\":25,\"alleles\":[{\"name\":\"A\"},{\"name\":\"a\"}],\"name\":\"red_eyes\"},{\"position\":40,\"alleles\":[{\"name\":\"B\"},{\"name\":\"b\"}],\"name\":\"wingless\"}],\"name\":\"Chromosome 1\"}}}}}\n"; + } + + public void test() + { + Model m = ModelParser.parse(getJson()); + System.out.println( m.getGenome() ); + assertNotNull(m.getGenome()); + assertNotNull(m.getMatingEngine()); + assertNotNull(m.getRules()); + + } + + @Override + public String getModuleName() + { + return "star.genetics.StarGenetics_gwt_java"; + } + +} diff --git a/test/star/genetics/tests/ToJSON.java b/test/star/genetics/tests/ToJSON.java new file mode 100644 index 0000000..ddfe351 --- /dev/null +++ b/test/star/genetics/tests/ToJSON.java @@ -0,0 +1,40 @@ +package star.genetics.tests; + +import java.io.IOException; +import java.io.InputStream; + +import org.json.JSONException; +import org.json.JSONObject; + +public class ToJSON +{ + static String getJSON(String name) + { + InputStream is = ToJSON.class.getResourceAsStream(name); + byte[] c; + try + { + c = new byte[is.available()]; + is.read(c); + String json = new String(c); + JSONObject data; + data = new JSONObject(json); + return data.toString(); + } + catch (JSONException e) + { + e.printStackTrace(); + return e.toString(); + } + catch (IOException e) + { + e.printStackTrace(); + return e.toString(); + } + } + + public static void main(String[] args) + { + System.out.println(getJSON("setupmodel.json")); + } +} diff --git a/test/star/genetics/tests/setupmodel.json b/test/star/genetics/tests/setupmodel.json new file mode 100644 index 0000000..fc9b6b3 --- /dev/null +++ b/test/star/genetics/tests/setupmodel.json @@ -0,0 +1,64 @@ +{ + "genetics": { + "visualizer": {"name":"fly"}, + "genome": { + "chromosomes": { + "C_1": { + "name": "Chromosome 1", + "genes": [ + { "name": "red_eyes", + "position": 25, + "alleles": [ + {"name": "A"}, + {"name": "a"} + ] + }, + { "name": "wingless", + "position": 40, + "alleles": [ + {"name": "B"}, + {"name": "b"} + ] + } + + ] + } + } + }, + "engine": { + "sex_type": "XY", + "male_recombination_rate": 1, + "female_recombination_rate": 1, + "female_sex_ratio":.51, + "twinning": 0, + "identical_twins_frequency": 0, + "avg_offspring_count": 50 + }, + "experiments": {}, + "phenotype_rules": [ + { "name": "default", + "matches": "*", + "phenotype": { + "wings": 1, + "eyes": "red" + } + }, + { + "name": "white eyes", + "matches": "aa", + "phenotype": { + "eyes": "white" + } + }, + { + "name": "wingless", + "matches": "bb", + "phenotype": { + "wings": 0 + } + } + ], + "gel_rules": {}, + "model_metadata": {} + } +} \ No newline at end of file diff --git a/war/stargenetics_gwt_java/A4F90E89AD961B49B56FF39C9B0D4613.cache.html b/war/stargenetics_gwt_java/A4F90E89AD961B49B56FF39C9B0D4613.cache.html deleted file mode 100644 index 3258d11..0000000 --- a/war/stargenetics_gwt_java/A4F90E89AD961B49B56FF39C9B0D4613.cache.html +++ /dev/null @@ -1,451 +0,0 @@ - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/A7B3ED58228A47ADF3B6C2FCB2FEB64F.cache.html b/war/stargenetics_gwt_java/A7B3ED58228A47ADF3B6C2FCB2FEB64F.cache.html deleted file mode 100644 index c1e352a..0000000 --- a/war/stargenetics_gwt_java/A7B3ED58228A47ADF3B6C2FCB2FEB64F.cache.html +++ /dev/null @@ -1,464 +0,0 @@ - - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/DA22CFA6C5FC806BE4E7675E10012783.cache.html b/war/stargenetics_gwt_java/DA22CFA6C5FC806BE4E7675E10012783.cache.html deleted file mode 100644 index 6cfd911..0000000 --- a/war/stargenetics_gwt_java/DA22CFA6C5FC806BE4E7675E10012783.cache.html +++ /dev/null @@ -1,475 +0,0 @@ - - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/E93DDC2D1A1CEE51C76F8F0BF233FC57.cache.html b/war/stargenetics_gwt_java/E93DDC2D1A1CEE51C76F8F0BF233FC57.cache.html deleted file mode 100644 index be34ae6..0000000 --- a/war/stargenetics_gwt_java/E93DDC2D1A1CEE51C76F8F0BF233FC57.cache.html +++ /dev/null @@ -1,481 +0,0 @@ - - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/F915C834D89A24C70BF22596EC3F80A0.cache.html b/war/stargenetics_gwt_java/F915C834D89A24C70BF22596EC3F80A0.cache.html deleted file mode 100644 index 84d96b4..0000000 --- a/war/stargenetics_gwt_java/F915C834D89A24C70BF22596EC3F80A0.cache.html +++ /dev/null @@ -1,490 +0,0 @@ - - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/FB85208609937CB03861ACB89CBF33B8.cache.html b/war/stargenetics_gwt_java/FB85208609937CB03861ACB89CBF33B8.cache.html deleted file mode 100644 index e0f519f..0000000 --- a/war/stargenetics_gwt_java/FB85208609937CB03861ACB89CBF33B8.cache.html +++ /dev/null @@ -1,463 +0,0 @@ - - - \ No newline at end of file diff --git a/war/stargenetics_gwt_java/stargenetics_gwt_java.nocache.js b/war/stargenetics_gwt_java/stargenetics_gwt_java.nocache.js deleted file mode 100644 index b74a780..0000000 --- a/war/stargenetics_gwt_java/stargenetics_gwt_java.nocache.js +++ /dev/null @@ -1,18 +0,0 @@ -function stargenetics_gwt_java(){var P='',xb='" for "gwt:onLoadErrorFn"',vb='" for "gwt:onPropertyErrorFn"',ib='"><\/script>',Z='#',Xb='.cache.html',_='/',lb='//',Wb=':',pb='::',dc=' + + + + diff --git a/www-test/star.genetics.StarGenetics_gwt_java.JUnit/junit.html b/www-test/star.genetics.StarGenetics_gwt_java.JUnit/junit.html new file mode 100644 index 0000000..e58ebce --- /dev/null +++ b/www-test/star.genetics.StarGenetics_gwt_java.JUnit/junit.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + diff --git a/www-test/star.genetics.StarGenetics_gwt_java.JUnit/star.genetics.StarGenetics_gwt_java.JUnit.nocache.js b/www-test/star.genetics.StarGenetics_gwt_java.JUnit/star.genetics.StarGenetics_gwt_java.JUnit.nocache.js new file mode 100644 index 0000000..098a913 --- /dev/null +++ b/www-test/star.genetics.StarGenetics_gwt_java.JUnit/star.genetics.StarGenetics_gwt_java.JUnit.nocache.js @@ -0,0 +1,17 @@ +function star_genetics_StarGenetics_gwt_java_JUnit(){var O='',wb='" for "gwt:onLoadErrorFn"',ub='" for "gwt:onPropertyErrorFn"',hb='"><\/script>',Y='#',Rb='.cache.html',$='/',kb='//',Qb=':',ob='::',Zb='