Author: chatellier Date: 2009-03-11 15:23:06 +0000 (Wed, 11 Mar 2009) New Revision: 1941 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java Log: Improve visitors. Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java 2009-03-11 15:23:06 UTC (rev 1941) @@ -0,0 +1,90 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.mexico.xml; + +import java.io.Serializable; + +import fr.ifremer.isisfish.simulator.sensitivity.Domain; +import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; + +/** + * XML domain visitor. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ + */ +public class ContinousDomainXMLVisitor extends DomainXMLVisitor { + + /** XML text buffer. */ + protected StringBuffer xmlBuffer; + + /** + * Constructor. + * + * Init xml buffer. + */ + public ContinousDomainXMLVisitor() { + xmlBuffer = new StringBuffer(); + } + + /** + * Get xml buffer content. + * + * @return content as string + */ + public String getXML() { + String xml = xmlBuffer.toString(); + return xml; + } + + /** + * {@inheritDoc} + */ + @Override + public void start(Domain<? extends Serializable> domain) { + xmlBuffer.append("<domain>"); + xmlBuffer.append("<fixed"); + + ContinuousDomain<?> cDomain = (ContinuousDomain<?>)domain; + xmlBuffer.append(" cardinality=\"" + cDomain.getCardinality() + "\">"); + + xmlBuffer.append("<range min=\"" + cDomain.getMinBound() + "\" max=\"" + cDomain.getMaxBound() + "\" />"); + } + + /** + * {@inheritDoc} + */ + @Override + public <E extends Serializable> void visit(Domain<E> domain, + Serializable label, Serializable value) { + + } + + /** + * {@inheritDoc} + */ + @Override + public void end(Domain<? extends Serializable> domain) { + xmlBuffer.append("<fixed>"); + xmlBuffer.append("</domain>"); + } +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java 2009-03-11 15:21:43 UTC (rev 1940) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DesignPlanXMLVisitor.java 2009-03-11 15:23:06 UTC (rev 1941) @@ -62,7 +62,8 @@ */ @Override public void start(DesignPlan designPlan) { - xmlBuffer.append("<designplan>"); + xmlBuffer.append("<experimentalDesign>"); + xmlBuffer.append("<factors>"); } /** @@ -81,7 +82,8 @@ */ @Override public void end(DesignPlan designPlan) { - xmlBuffer.append("</designplan>"); + xmlBuffer.append("</factors>"); + xmlBuffer.append("</experimentalDesign>"); } } Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2009-03-11 15:23:06 UTC (rev 1941) @@ -0,0 +1,92 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.mexico.xml; + +import java.io.Serializable; + +import fr.ifremer.isisfish.simulator.sensitivity.Domain; +import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; + +/** + * XML domain visitor. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 5 mars 2009 $ + * By : $Author: chatellier $ + */ +public class DiscreteDomainXMLVisitor extends DomainXMLVisitor { + + /** XML text buffer. */ + protected StringBuffer xmlBuffer; + + /** + * Constructor. + * + * Init xml buffer. + */ + public DiscreteDomainXMLVisitor() { + xmlBuffer = new StringBuffer(); + } + + /** + * Get xml buffer content. + * + * @return content as string + */ + public String getXML() { + String xml = xmlBuffer.toString(); + return xml; + } + + /** + * {@inheritDoc} + */ + @Override + public void start(Domain<? extends Serializable> domain) { + xmlBuffer.append("<domain>"); + xmlBuffer.append("<fixed"); + + DiscreteDomain<?> dDomain = (DiscreteDomain<?>)domain; + xmlBuffer.append(" cardinality=\"" + dDomain.getValues().size() + "\""); + + xmlBuffer.append(">"); + xmlBuffer.append("<enumeration>"); + } + + /** + * {@inheritDoc} + */ + @Override + public <E extends Serializable> void visit(Domain<E> domain, + Serializable label, Serializable value) { + xmlBuffer.append("<value>" + value + "</value>"); + } + + /** + * {@inheritDoc} + */ + @Override + public void end(Domain<? extends Serializable> domain) { + xmlBuffer.append("</enumeration>"); + xmlBuffer.append("<fixed>"); + xmlBuffer.append("</domain>"); + } +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2009-03-11 15:21:43 UTC (rev 1940) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2009-03-11 15:23:06 UTC (rev 1941) @@ -63,12 +63,16 @@ */ @Override public void start(Domain<? extends Serializable> domain) { - xmlBuffer.append("<domain "); + xmlBuffer.append("<domain>"); + xmlBuffer.append("<fixed"); + if (domain instanceof ContinuousDomain) { - xmlBuffer.append("type=\"continous\""); + ContinuousDomain<?> cDomain = (ContinuousDomain<?>)domain; + xmlBuffer.append(" cardinality=\"" + cDomain.getCardinality() + "\""); } - if (domain instanceof DiscreteDomain) { - xmlBuffer.append("type=\"discrete\""); + else if (domain instanceof DiscreteDomain) { + DiscreteDomain<?> dDomain = (DiscreteDomain<?>)domain; + xmlBuffer.append(" cardinality=\"" + dDomain.getValues().size() + "\""); } xmlBuffer.append(">"); } @@ -78,10 +82,8 @@ */ @Override public <E extends Serializable> void visit(Domain<E> domain, - Serializable label, E value) { - xmlBuffer.append("<value label=\"" + label + "\">"); - xmlBuffer.append(value); - xmlBuffer.append("</value>"); + Serializable label, Serializable value) { + } /** @@ -89,6 +91,7 @@ */ @Override public void end(Domain<? extends Serializable> domain) { + xmlBuffer.append("</fixed>"); xmlBuffer.append("</domain>"); } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2009-03-11 15:21:43 UTC (rev 1940) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2009-03-11 15:23:06 UTC (rev 1941) @@ -22,6 +22,8 @@ import fr.ifremer.isisfish.simulator.sensitivity.Domain; import fr.ifremer.isisfish.simulator.sensitivity.Factor; +import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; +import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; import fr.ifremer.isisfish.simulator.sensitivity.visitor.FactorVisitor; /** @@ -64,11 +66,14 @@ public void start(Factor<? extends Serializable> factor) { xmlBuffer.append("<factor"); xmlBuffer.append(" name=\"" + factor.getName() + "\""); - xmlBuffer.append(" path=\"" + factor.getPath() + "\""); - if (factor.getValue() != null) { - xmlBuffer.append(" value=\"" + factor.getValue() + "\""); + if (factor.getDomain() instanceof ContinuousDomain) { + xmlBuffer.append(" property=\"continuous\""); } + else if (factor.getDomain() instanceof DiscreteDomain) { + xmlBuffer.append(" property=\"discrete\""); + } xmlBuffer.append(">"); + xmlBuffer.append("<target>" + factor.getPath() + "</target>"); } /* @@ -76,7 +81,13 @@ */ @Override public void visit(Factor<? extends Serializable> factor, Domain<? extends Serializable> domain) { - DomainXMLVisitor visitor = new DomainXMLVisitor(); + DomainXMLVisitor visitor = null; + if (factor.getDomain() instanceof ContinuousDomain) { + visitor = new ContinousDomainXMLVisitor(); + } + else if (factor.getDomain() instanceof DiscreteDomain) { + visitor = new DiscreteDomainXMLVisitor(); + } domain.accept(visitor); xmlBuffer.append(visitor.getXML()); }