- Timestamp:
- 06/26/13 13:27:31 (12 years ago)
- Location:
- java/main
- Files:
-
- 22 added
- 1 deleted
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/pom.xml
r85 r86 19 19 </properties> 20 20 <dependencies> 21 <dependency> 22 <groupId>org.javatuples</groupId> 23 <artifactId>javatuples</artifactId> 24 <version>1.2</version> 25 <scope>compile</scope> 26 </dependency> 21 27 <dependency> 22 28 <groupId>com.google.code.findbugs</groupId> … … 90 96 <plugin> 91 97 <groupId>org.apache.maven.plugins</groupId> 98 <artifactId>maven-surefire-plugin</artifactId> 99 <version>2.9</version> 100 <configuration> 101 <useFile>false</useFile> 102 </configuration> 103 </plugin> 104 105 <plugin> 106 <groupId>org.apache.maven.plugins</groupId> 92 107 <artifactId>maven-compiler-plugin</artifactId> 93 108 <version>3.0</version> -
java/main/src/main/java/com/framsticks/core/Entity.java
r85 r86 3 3 import javax.annotation.OverridingMethodsMustInvokeSuper; 4 4 5 import com.framsticks.params.FramsClass; 5 import com.framsticks.params.annotations.FramsClassAnnotation; 6 import com.framsticks.params.annotations.ParamAnnotation; 6 7 import com.framsticks.util.dispatching.Thread; 7 8 import com.framsticks.util.dispatching.Dispatcher; … … 14 15 * @author Piotr Sniegowski 15 16 */ 17 @FramsClassAnnotation 16 18 public abstract class Entity implements Dispatcher<Entity> { 17 19 18 private final static Logger log = Logger.getLogger(Entity.class .getName());20 private final static Logger log = Logger.getLogger(Entity.class); 19 21 22 @ParamAnnotation 20 23 protected String name = "entity"; 21 24 protected EntityOwner owner; … … 109 112 } 110 113 111 public static void constructFramsClass(FramsClass.Constructor constructor) {112 constructor.method("getName");113 }114 114 } -
java/main/src/main/java/com/framsticks/core/Instance.java
r85 r86 23 23 private static final Logger log = Logger.getLogger(Instance.class.getName()); 24 24 25 26 25 protected Node root; 27 26 … … 34 33 protected void run() { 35 34 super.run(); 36 root = new Node((CompositeParam) Param.build().name("Instance").id(name).type("o").finish(), null);35 root = new Node((CompositeParam) Param.build().name("Instance").id(name).type("o").finish(), null); 37 36 com.framsticks.model.Package.register(registry); 38 37 } … … 112 111 } 113 112 114 115 113 protected void fireListChange(Path path, ListChange change) { 116 114 assert isActive(); … … 127 125 } 128 126 129 130 127 public final FramsClass getInfoFromCache(Path path) { 131 128 return getInfoFromCache(path.getTop().getParam().getContainedTypeName()); 132 129 } 133 130 134 135 131 public FramsClass getInfoFromCache(String id) { 136 132 assert isActive(); … … 140 136 protected Registry registry = new Registry(); 141 137 142 public AccessInterface createAccess(String name) {138 public AccessInterface createAccess(String name) throws ConstructionException { 143 139 assert isActive(); 144 140 return registry.createAccess(name); 145 141 } 146 147 142 148 143 // TODO: make ValueParam … … 165 160 public final AccessInterface bindAccess(Node node) { 166 161 assert node.getObject() != null; 167 AccessInterface access = registry.prepareAccess(node.getParam()); 168 if (access == null){169 log.error("missing access for: " + node.getParam());170 return null;171 }172 access.select(node.getObject());173 return access;162 163 try { 164 return registry.prepareAccess(node.getParam()).select(node.getObject()); 165 } catch (ConstructionException e) { 166 log.error("failed to bind access for " + node.getParam() + ": " + e); 167 } 168 return null; 174 169 } 175 170 -
java/main/src/main/java/com/framsticks/gui/controls/Control.java
r84 r86 1 1 package com.framsticks.gui.controls; 2 2 3 import java.awt.BorderLayout; 4 5 import javax.swing.JComponent; 6 import javax.swing.JPanel; 7 8 import com.framsticks.gui.Frame; 3 9 import com.framsticks.params.Flags; 4 10 import com.framsticks.params.Param; 5 import javax.swing.*;6 import java.awt.*;7 11 8 12 /** -
java/main/src/main/java/com/framsticks/hosting/ServerInstance.java
r85 r86 3 3 import com.framsticks.core.*; 4 4 import com.framsticks.params.CompositeParam; 5 import com.framsticks.params.ConstructionException; 5 6 import com.framsticks.params.FramsClass; 7 import com.framsticks.params.FramsClassBuilder; 6 8 import com.framsticks.params.Param; 7 9 import com.framsticks.core.LocalInstance; … … 42 44 hosted.setName("hosted"); 43 45 hosted.configure(hostedConfig); 44 root = new Node((CompositeParam) Param.build().name("root").id("root").type("o" + hosted.getClass().getCanonicalName()).finish(), hosted);46 root = new Node((CompositeParam) Param.build().name("root").id("root").type("o" + hosted.getClass().getCanonicalName()).finish(), hosted); 45 47 } 46 48 … … 57 59 try { 58 60 Class<?> nativeClass = Class.forName(id); 59 FramsClass framsClass = new FramsClass.Constructor(nativeClass, id).getResult(); 61 FramsClass framsClass = FramsClassBuilder.buildForClass(nativeClass); 62 63 if (!framsClass.getId().equals(id)) { 64 log.error("no matching id"); 65 return null; 66 } 60 67 61 68 registry.registerReflectedClass(null, id, nativeClass); … … 63 70 return framsClass; 64 71 } catch (ClassNotFoundException ignored) { 72 } catch (ConstructionException e) { 73 log.error("failed to use info from cache: " + e); 65 74 } 66 75 -
java/main/src/main/java/com/framsticks/model/BaseJoint.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.ParamAnnotation; 3 4 import com.framsticks.util.math.Point3d; 4 5 … … 8 9 public class BaseJoint { 9 10 10 /** stif */ 11 public Double stiffness; 12 public Double getStif() { return stiffness; } 13 public void setStif(Double stif) { stiffness = stif; } 11 @ParamAnnotation(id = "stif") 12 public double stiffness; 14 13 15 /** rotstif */ 16 public Double rotationStiffness; 17 public Double getRotstif() { return rotationStiffness; } 18 public void setRotstif(Double rotstif) { rotationStiffness = rotstif; } 14 @ParamAnnotation(id = "rotstif") 15 public double rotationStiffness; 19 16 20 /** rx, ry, rz*/17 @ParamAnnotation 21 18 public double rx, ry, rz; 22 19 … … 24 21 public void setRotation(Point3d r) { rx = r.x; ry = r.y; rz = r.z; } 25 22 26 /** dx, dy, dz*/23 @ParamAnnotation 27 24 public double dx, dy, dz; 28 25 -
java/main/src/main/java/com/framsticks/model/BaseNeuro.java
r78 r86 1 1 package com.framsticks.model; 2 3 import com.framsticks.params.annotations.ParamAnnotation; 2 4 3 5 /** … … 5 7 */ 6 8 public class BaseNeuro { 7 /** inputCount */ 8 public Integer inputCount; 9 public Integer getGetInputCount() { return inputCount; } 10 public void setGetInputCount(Integer getInputCount) { inputCount = getInputCount; } 9 10 @ParamAnnotation(id = "getInputCount") 11 public int inputCount; 11 12 12 13 -
java/main/src/main/java/com/framsticks/model/BasePart.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.ParamAnnotation; 3 4 import com.framsticks.util.math.Orientation; 4 5 import com.framsticks.util.math.Point3d; … … 8 9 */ 9 10 public class BasePart { 10 /** x, y, z */ 11 12 @ParamAnnotation 11 13 public double x, y, z; 12 14 … … 14 16 public void setPosition(Point3d p) { x = p.x; y = p.y; z = p.z; } 15 17 16 /** m */ 17 public Double mass = 0.0; 18 public Double getM() { return mass; } 19 public void setM(Double m) { mass = m; } 18 @ParamAnnotation(id = "m") 19 public double mass = 0.0; 20 20 21 /** s */ 22 public Double size = 0.0; 23 public Double getS() { return size; } 24 public void setS(Double s) { size = s; } 21 @ParamAnnotation(id = "s") 22 public double size = 0.0; 25 23 26 /** fr */ 27 public Double friction; 28 public Double getFr() { return friction; } 29 public void setFr(Double fr) { friction = fr; } 24 @ParamAnnotation(id = "fr") 25 public double friction; 30 26 31 27 @ParamAnnotation 32 28 public double oxx, oxy, oxz, oyx, oyy, oyz, ozx, ozy, ozz; 33 29 -
java/main/src/main/java/com/framsticks/model/Creature.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.FramsClass; 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 4 5 import com.framsticks.util.math.Point3d; 5 6 … … 7 8 import java.util.List; 8 9 10 @FramsClassAnnotation 9 11 public class Creature { 12 13 @ParamAnnotation 10 14 public String name; 11 15 16 @ParamAnnotation 12 17 public String genotype; 13 18 19 @ParamAnnotation 14 20 public String info; 15 21 22 @ParamAnnotation 16 23 public Object group; 17 24 18 public Integer generation; 19 public Integer getGnum() { return generation; } 20 public void setGnum(Integer gnum) { generation = gnum; } 25 @ParamAnnotation(id = "gnum") 26 public int generation; 21 27 22 public Integer buildProblems; 23 public Integer getBuildproblems() { return buildProblems; } 24 public void setBuildproblems(Integer buildproblems) { buildProblems = buildproblems; } 28 @ParamAnnotation(id = "buildproblems") 29 public int buildProblems; 25 30 26 public Double startingEnergy; 27 public Double getEnerg0() { return startingEnergy; } 28 public void setEnerg0(Double energ0) { startingEnergy = energ0; } 31 @ParamAnnotation(id = "energ0") 32 public double startingEnergy; 29 33 30 public Double idlePowerConsumption; 31 public Double getIdleen() { return idlePowerConsumption; } 32 public void setIdleen(Double idleen) { idlePowerConsumption = idleen; } 34 @ParamAnnotation(id = "idleen") 35 public double idlePowerConsumption; 33 36 34 public Double energy; 37 @ParamAnnotation 38 public double energy; 35 39 36 public Double energyIncome; 37 public Double getEnergy_p() { return energyIncome; } 38 public void setEnergy_p(Double energy_p) { energyIncome = energy_p; } 40 @ParamAnnotation(id = "energy_p") 41 public double energyIncome; 39 42 40 public Double energyCosts; 41 public Double getEnergy_m() { return energyCosts; } 42 public void setEnergy_m(Double energy_m) { energyCosts = energy_m; } 43 @ParamAnnotation(id = "energy_m") 44 public double energyCosts; 43 45 44 public Double energyBalance; 45 public Double getEnergy_b() { return energyBalance; } 46 public void setEnergy_b(Double energy_b) { energyBalance = energy_b; } 46 @ParamAnnotation(id = "energy_b") 47 public double energyBalance; 47 48 48 public Integer performanceCalculation; 49 public Integer getPerf() { return performanceCalculation; } 50 public void setPerf(Integer perf) { performanceCalculation = perf; } 49 @ParamAnnotation(id = "perf") 50 public int performanceCalculation; 51 51 52 public Boolean neuralNetworkEnabled; 52 @ParamAnnotation(id = "nnenabled") 53 public boolean neuralNetworkEnabled; 53 54 54 public Boolean getNnenabled() { return neuralNetworkEnabled; }55 public void setNnenabled(Boolean nnenabled) { neuralNetworkEnabled = nnenabled; }55 @ParamAnnotation(id = "bodysim") 56 public boolean bodySimulation; 56 57 57 public Boolean bodySimulation; 58 public Boolean getBodysim() { return bodySimulation; } 59 public void setBodysim(Boolean bodysim) { bodySimulation = bodysim; } 58 @ParamAnnotation(id = "selfcol") 59 public boolean selfCollisions; 60 60 61 public Boolean selfCollisions; 62 public Boolean getSelfcol() { return selfCollisions; } 63 public void setSelfcol(Boolean selfcol) { selfCollisions = selfcol; } 61 @ParamAnnotation(id = "lifespan") 62 public int lifeSpan; 64 63 65 public Integer lifeSpan; 66 public Integer getLifespan() { return lifeSpan; } 67 public void setLifespan(Integer lifespan) { lifeSpan = lifespan; } 64 @ParamAnnotation 65 public double distance; 68 66 69 public Double distance; 67 @ParamAnnotation(id = "c_velocity") 68 public double currentVelocity; 70 69 71 public Double currentVelocity; 72 public Double getC_velocity() { return currentVelocity; } 73 public void setC_velocity(Double c_velocity) { currentVelocity = c_velocity; } 70 @ParamAnnotation(id = "c_vertvelocity") 71 public double currentVerticalVelocity; 74 72 75 public Double currentVerticalVelocity; 76 public Double getC_vertvelocity() { return currentVerticalVelocity; } 77 public void setC_vertvelocity(Double c_vertvelocity) { currentVerticalVelocity = c_vertvelocity; } 73 @ParamAnnotation(id = "c_vertpos") 74 public double currentVerticalPosition; 78 75 79 public Double currentVerticalPosition; 80 public Double getC_vertpos() { return currentVerticalPosition; } 81 public void setC_vertpos(Double c_vertpos) { currentVerticalPosition = c_vertpos; } 76 @ParamAnnotation(id = "velocity") 77 public double averageVelocity; 82 78 83 public Double averageVelocity; 84 public Double getVelocity() { return averageVelocity; } 85 public void setVelocity(Double c_velocity) { averageVelocity = c_velocity; } 79 @ParamAnnotation(id = "vertvel") 80 public double averageVerticalVelocity; 86 81 87 public Double averageVerticalVelocity; 88 public Double getVertvel() { return averageVerticalVelocity; } 89 public void setVertvel(Double c_vertvelocity) { averageVerticalVelocity = c_vertvelocity; } 82 @ParamAnnotation(id = "vertpos") 83 public double averageVerticalPosition; 90 84 91 public Double averageVerticalPosition; 92 public Double getVertpos() { return averageVerticalPosition; } 93 public void setVertpos(Double c_vertpos) { averageVerticalPosition = c_vertpos; } 94 95 /** pos_x, pos_y, pos_z*/ 85 @ParamAnnotation 96 86 public double pos_x, pos_y, pos_z; 97 87 … … 99 89 public void setPosition(Point3d pos) { pos_x = pos.x; pos_y = pos.y; pos_z = pos.z; } 100 90 91 @ParamAnnotation 101 92 public double size_x, size_y, size_z; 102 93 … … 106 97 107 98 /** center_x, center_y, center_z*/ 99 @ParamAnnotation 108 100 public double center_x, center_y, center_z; 109 101 … … 111 103 public void setCenter(Point3d center) { center_x = center.x; center_y = center.y; center_z = center.z; } 112 104 113 public Integer getNumparts() { return parts.size(); } 114 public void setNumparts(Integer numparts) { } 105 @ParamAnnotation 106 public int getNumparts() { return parts.size(); } 107 @ParamAnnotation 108 public void setNumparts(int numparts) { } 115 109 116 public Integer getNumjoints() { return joints.size(); } 117 public void setNumjoints(Integer numjoints) { } 110 @ParamAnnotation 111 public int getNumjoints() { return joints.size(); } 112 @ParamAnnotation 113 public void setNumjoints(int numjoints) { } 118 114 119 public Integer getNumneurons() { return neurons.size(); } 120 public void setNumneurons(Integer numneurons) { } 115 @ParamAnnotation 116 public int getNumneurons() { return neurons.size(); } 117 @ParamAnnotation 118 public void setNumneurons(int numneurons) { } 121 119 122 120 public Object[] userFields = new Object[3]; 121 @ParamAnnotation 123 122 public Object getUser1() { return userFields[0]; } 123 @ParamAnnotation 124 124 public void setUser1(Object user1) { userFields[0] = user1; } 125 125 126 @ParamAnnotation 126 127 public Object getUser2() { return userFields[1]; } 128 @ParamAnnotation 127 129 public void setUser2(Object user2) { userFields[1] = user2; } 128 130 131 @ParamAnnotation 129 132 public Object getUser3() { return userFields[2]; } 133 @ParamAnnotation 130 134 public void setUser3(Object user3) { userFields[2] = user3; } 131 135 132 public Integer selfCollisionMask; 133 public Integer getSelfmask() { return selfCollisionMask; } 134 public void setSelfmask(Integer selfmask) { selfCollisionMask = selfmask; } 136 @ParamAnnotation(id = "selfmask") 137 public int selfCollisionMask; 135 138 136 public Integer otherCollisionMask; 137 public Integer getOthermask() { return otherCollisionMask; } 138 public void setOthermask(Integer othermask) { otherCollisionMask = othermask; } 139 @ParamAnnotation(id = "othermask") 140 public int otherCollisionMask; 139 141 142 @ParamAnnotation(id = "selfcolstate") 143 public boolean selfCollisionsState; 144 145 @ParamAnnotation 140 146 public String uid; 141 147 142 public Integer index; 148 @ParamAnnotation 149 public int index; 143 150 151 @ParamAnnotation 144 152 public final List<Part> parts = new ArrayList<Part>(); 153 @ParamAnnotation 145 154 public final List<Joint> joints = new ArrayList<Joint>(); 155 @ParamAnnotation 146 156 public final List<NeuroDef> neurodefs = new ArrayList<NeuroDef>(); 147 157 … … 150 160 public final List<NeuroDef> getNeuroDefs() { return neurodefs; } 151 161 162 @ParamAnnotation 152 163 public final List<MechPart> mechparts = new ArrayList<MechPart>(); 164 @ParamAnnotation 153 165 public final List<MechJoint> mechjoints = new ArrayList<MechJoint>(); 166 @ParamAnnotation 154 167 public final List<Neuro> neurons = new ArrayList<Neuro>(); 155 168 … … 158 171 public final List<Neuro> getNeurons() { return neurons; } 159 172 160 161 162 public static void constructFramsClass(FramsClass.Constructor constructor) {163 constructor.field("name");164 constructor.field("parts");165 constructor.field("joints");166 constructor.field("neurodefs");167 constructor.field("mechparts");168 constructor.field("mechjoints");169 constructor.field("neurons");170 }171 172 173 } -
java/main/src/main/java/com/framsticks/model/Genotype.java
r84 r86 1 1 package com.framsticks.model; 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 2 5 3 6 4 7 // import org.apache.log4j.Logger; 5 8 9 @FramsClassAnnotation 6 10 public class Genotype extends Model { 7 11 // private final static Logger log = Logger.getLogger(Genotype.class); 8 12 13 @ParamAnnotation 9 14 public String name; 15 16 @ParamAnnotation 10 17 public String genotype; 18 19 @ParamAnnotation 11 20 public String info; 12 21 13 public Double similarity; 14 public Double getSimi() { return similarity; } 15 public void setSimi(Double simi) { similarity = simi; } 22 @ParamAnnotation(id = "simi") 23 public double similarity; 16 24 17 public Double brainConnections; 18 public Double getNumconnections() { return brainConnections; } 19 public void setNumconnections(Double numconnections) { brainConnections = numconnections; } 25 @ParamAnnotation(id = "numconnections") 26 public double brainConnections; 20 27 21 public Integer ordinalNumber; 22 public Integer getNum() { return ordinalNumber; } 23 public void setNum(Integer num) { ordinalNumber = num; } 28 @ParamAnnotation(id = "num") 29 public int ordinalNumber; 24 30 25 public Integer generation; 26 public Integer getGnum() { return generation; } 27 public void setGnum(Integer gnum) { generation = gnum; } 31 @ParamAnnotation(id = "gnum") 32 public int generation; 28 33 29 public Integer instances; 34 @ParamAnnotation 35 public int instances; 30 36 31 public Integer lifeSpan; 32 public Integer getLifespan() { return lifeSpan; } 33 public void setLifespan(Integer lifespan) { lifeSpan = lifespan; } 37 @ParamAnnotation(id = "lifespan") 38 public double lifeSpan; 34 39 35 public Double velocity;36 public Double distance;40 @ParamAnnotation 41 public double velocity; 37 42 38 public Double verticalVelocity; 39 public Double getVertvel() { return verticalVelocity; } 40 public void setVertvel(Double vertvel) { verticalVelocity = vertvel; } 43 @ParamAnnotation 44 public double distance; 41 45 42 public Double verticalPosition; 43 public Double getVertpos() { return verticalPosition; } 44 public void setVertpos(Double vertpos) { verticalPosition = vertpos; } 46 @ParamAnnotation(id = "vertvel") 47 public double verticalVelocity; 45 48 46 public Double fitness; 47 public Double getFit() { return fitness; } 48 public void setFit(Double fit) { fitness = fit; } 49 @ParamAnnotation(id = "vertpos") 50 public double verticalPosition; 49 51 50 public Double finalFitness; 51 public Double getFit2() { return finalFitness; } 52 public void setFit2(Double fit2) { finalFitness = fit2; } 52 @ParamAnnotation(id = "fit") 53 public double fitness; 53 54 55 @ParamAnnotation(id = "fit2") 56 public double finalFitness; 57 58 @ParamAnnotation(id = "f0genotype") 54 59 public String genotypeInF0; 55 public String getF0genotype() { return genotypeInF0; }56 public void setF0genotype(String f0genotype) { genotypeInF0 = f0genotype; }57 60 61 @ParamAnnotation(id = "convtrace1") 58 62 public String conversionBacktrace; 59 public String getConvtrace1() { return conversionBacktrace; } 60 public void setConvtrace1(String convtrace1) { conversionBacktrace = convtrace1; } 63 64 @ParamAnnotation 65 public boolean isValid; 61 66 62 67 public Object[] userFields = new Object[3]; 68 @ParamAnnotation 63 69 public Object getUser1() { return userFields[0]; } 70 @ParamAnnotation 64 71 public void setUser1(Object user1) { userFields[0] = user1; } 65 72 73 @ParamAnnotation 66 74 public Object getUser2() { return userFields[1]; } 75 @ParamAnnotation 67 76 public void setUser2(Object user2) { userFields[1] = user2; } 68 77 78 @ParamAnnotation 69 79 public Object getUser3() { return userFields[2]; } 80 @ParamAnnotation 70 81 public void setUser3(Object user3) { userFields[2] = user3; } 71 82 83 @ParamAnnotation 72 84 public String uid; 85 86 @ParamAnnotation 87 public double getStrsiz() { return getNumparts(); } 88 @ParamAnnotation 89 public void setStrsiz(double strsiz) { setNumparts(strsiz); } 90 91 92 @ParamAnnotation 93 public double getStrjoints() { return getNumjoints(); } 94 @ParamAnnotation 95 public void setStrjoints(double strjoints) { setNumjoints(strjoints); } 96 97 98 @ParamAnnotation 99 public double getNnsiz() { return getNumneurons(); } 100 @ParamAnnotation 101 public void setNnsiz(double nnsiz) { setNumneurons(nnsiz); } 102 103 104 @ParamAnnotation 105 public double getNncon() { return brainConnections; } 106 @ParamAnnotation 107 public void setNncon(double nncon) { this.brainConnections = nncon; } 108 109 @ParamAnnotation 110 public int getPopsiz() { return instances; } 111 @ParamAnnotation 112 public void setPopsiz(int popsiz) { this.instances = popsiz; } 113 73 114 74 115 } -
java/main/src/main/java/com/framsticks/model/Joint.java
r84 r86 1 1 package com.framsticks.model; 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 2 5 3 6 /** … … 6 9 * All accessors are used by ReflectionAccess. 7 10 */ 11 @FramsClassAnnotation(id = "j") 8 12 public class Joint extends BaseJoint { 9 13 10 /** i */14 @ParamAnnotation(id = "i") 11 15 public String info; 12 public String getI() { return info; }13 public void setI(String i) { info = i; }14 16 15 /** p1 */ 16 public Integer part1; 17 public void setP1(Integer p1) { part1 = p1; } 18 public Integer getP1() { return part1; } 17 @ParamAnnotation(id = "p1") 18 public int part1; 19 19 20 /** p2 */ 21 public Integer part2; 22 public void setP2(Integer p2) { part2 = p2; } 23 public Integer getP2() { return part2; } 20 @ParamAnnotation(id = "p2") 21 public int part2; 24 22 23 @ParamAnnotation(id = "stam") 24 public double stamina; 25 25 26 /** stam */ 27 public Double stamina; 28 public Double getStam() { return stamina; } 29 public void setStam(Double stam) { stamina = stam; } 26 @ParamAnnotation(id = "Vstyle") 27 public String visualizationStyle; 30 28 29 @ParamAnnotation 30 public double vr, vg, vb; 31 31 32 /** Vstyle */33 public String visualizationStyle;34 public String getVstyle() { return visualizationStyle; }35 public void setVstyle(String Vstyle) { visualizationStyle = Vstyle; }36 32 } -
java/main/src/main/java/com/framsticks/model/MechJoint.java
r84 r86 1 1 package com.framsticks.model; 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 2 5 3 6 /** 4 7 * @author Piotr Sniegowski 5 8 */ 9 @FramsClassAnnotation 6 10 public class MechJoint extends BaseJoint { 7 11 8 /** stress */ 9 public Double stress; 10 public Double getStress() { return stress; } 11 public void setStress(Double stress) { this.stress = stress; } 12 @ParamAnnotation 13 public double stress; 12 14 13 /** rotstress */ 14 public Double rotationStress; 15 public Double getRotstress() { return rotationStress; } 16 public void setRotstress(Double rotstress) { rotationStress = rotstress; } 15 @ParamAnnotation(id = "rotstress") 16 public double rotationStress; 17 17 } -
java/main/src/main/java/com/framsticks/model/MechPart.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 3 5 import com.framsticks.util.math.Point3d; 4 6 5 7 /* 6 8 */ 9 @FramsClassAnnotation 7 10 public class MechPart extends BasePart { 8 11 9 /** vol */ 10 public Double volume = 0.0; 11 public Double getVol() { return volume; } 12 public void setVol(Double vol) { volume = vol; } 12 @ParamAnnotation(id = "vol") 13 public double volume = 0.0; 13 14 14 /** vx, vy, vz*/15 @ParamAnnotation 15 16 public double vx, vy, vz; 16 17 -
java/main/src/main/java/com/framsticks/model/Model.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 3 5 import com.framsticks.util.lang.Casting; 4 6 import com.framsticks.util.lang.Containers; … … 14 16 * Author: Piotr Śniegowski 15 17 */ 18 @FramsClassAnnotation(id = "m") 16 19 public class Model { 17 20 18 21 private final static Logger log = Logger.getLogger(Model.class); 19 22 20 public Double startingEnergy; 21 public Double getEnerg0() { return startingEnergy; } 22 public void setEnerg0(Double energ0) { startingEnergy = energ0; } 23 @ParamAnnotation(id = "se") 24 public double startingEnergy; 23 25 24 public Double getSe() { return startingEnergy; } 25 public void setSe(Double se) { startingEnergy = se; } 26 @ParamAnnotation 27 public double getEnerg0() { return startingEnergy; } 28 @ParamAnnotation 29 public void setEnerg0(double energ0) { startingEnergy = energ0; } 26 30 27 /** Vstyle */ 31 32 @ParamAnnotation(id = "Vstyle") 28 33 public String visualizationStyle; 29 public String getVstyle() { return visualizationStyle; }30 public void setVstyle(String Vstyle) { visualizationStyle = Vstyle; }31 34 35 @ParamAnnotation 32 36 public final List<Part> parts = new ArrayList<Part>(); 37 38 @ParamAnnotation 33 39 public final List<Joint> joints = new ArrayList<Joint>(); 40 41 @ParamAnnotation 34 42 public final List<NeuroDef> neurodefs = new ArrayList<NeuroDef>(); 35 43 36 public Double getNumparts() { return (double)parts.size(); } 37 public Double getNumjoints() { return (double)joints.size(); } 38 public Double getNumneurons() { return (double)neurodefs.size(); } 44 //TODO: why those methods returns and accepts doubles? 45 @ParamAnnotation 46 public double getNumparts() { return (double)parts.size(); } 47 @ParamAnnotation 48 public double getNumjoints() { return (double)joints.size(); } 49 @ParamAnnotation 50 public double getNumneurons() { return (double)neurodefs.size(); } 39 51 40 52 //this is impossible to use, because numparts field is marked as readonly 41 public void setNumparts(Double numparts) { Containers.resizeList(parts, (int) (double) numparts); } 42 public void setNumjoints(Double numjoints) { Containers.resizeList(joints, (int)(double)numjoints); } 43 public void setNumneurons(Double numneurons) { Containers.resizeList(neurodefs, (int)(double)numneurons); } 53 @ParamAnnotation 54 public void setNumparts(double numparts) { Containers.resizeList(parts, (int) (double) numparts); } 55 @ParamAnnotation 56 public void setNumjoints(double numjoints) { Containers.resizeList(joints, (int)(double)numjoints); } 57 @ParamAnnotation 58 public void setNumneurons(double numneurons) { Containers.resizeList(neurodefs, (int)(double)numneurons); } 44 59 45 60 public List<Part> getParts() { return parts; } … … 78 93 for (Joint j : f0Genotype.getJoints()) { 79 94 /** based on c++ Joint::attachToParts*/ 80 Part p1 = f0Genotype.parts.get(j. getP1());81 Part p2 = f0Genotype.parts.get(j. getP2());95 Part p1 = f0Genotype.parts.get(j.part1); 96 Part p2 = f0Genotype.parts.get(j.part2); 82 97 assert p1 != null && p2 != null; 83 98 Orientation o = new Orientation().rotate(j.getRotation()); -
java/main/src/main/java/com/framsticks/model/Neuro.java
r84 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 3 5 import com.framsticks.util.math.Point3d; 4 6 … … 6 8 * @author Piotr Sniegowski 7 9 */ 10 @FramsClassAnnotation 8 11 public class Neuro extends BaseNeuro { 9 12 10 public Integer channelCount; 13 @ParamAnnotation 14 public int channelCount; 11 15 12 public Double inputSum; 16 @ParamAnnotation 17 public double inputSum; 13 18 14 public Double weightedInputSum; 19 @ParamAnnotation 20 public double weightedInputSum; 15 21 16 public Double state; 22 @ParamAnnotation 23 public double state; 17 24 18 public Double currentState; 19 public Double getCurrState() { return currentState; } 20 public void setCurrState(Double currState) { currentState = currState; } 25 @ParamAnnotation(id = "currState") 26 public double currentState; 21 27 22 public Boolean hold; 28 @ParamAnnotation 29 public boolean hold; 23 30 31 @ParamAnnotation 24 32 public double position_x, position_y, position_z; 25 33 -
java/main/src/main/java/com/framsticks/model/NeuroDef.java
r78 r86 1 1 package com.framsticks.model; 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 2 5 3 6 /** 4 7 * @author Piotr Sniegowski 5 8 */ 9 @FramsClassAnnotation(id = "n") 6 10 public class NeuroDef extends BaseNeuro { 7 11 8 /** p */9 public Integerpart;12 @ParamAnnotation(id = "p") 13 public int part; 10 14 11 /** j */12 public Integerjoint;15 @ParamAnnotation(id = "j") 16 public int joint; 13 17 14 /** d */18 @ParamAnnotation(id = "d") 15 19 public String details; 16 20 17 /** i */21 @ParamAnnotation(id = "i") 18 22 public String info; 19 23 20 /** Vstyle */24 @ParamAnnotation(id = "Vstyle") 21 25 public String visualizationStyle; 22 26 23 public Integer getP() { return part; }24 public void setP(Integer p) { part = p; }25 26 public Integer getJ() { return joint; }27 public void setJ(Integer j) { joint = j; }28 29 public String getD() { return details; }30 public void setD(String d) { details = d; }31 32 public String getI() { return info; }33 public void setI(String i) { info = i; }34 35 public String getVstyle() { return visualizationStyle; }36 public void setVstyle(String Vstyle) { visualizationStyle = Vstyle; }37 38 39 40 27 } -
java/main/src/main/java/com/framsticks/model/Package.java
r84 r86 8 8 public class Package { 9 9 public static void register(Registry registry) { 10 registry.registerReflectedClass("MechPart", null, "com.framsticks.model.MechPart"); 11 registry.registerReflectedClass("Joint", "j", "com.framsticks.model.Joint"); 12 registry.registerReflectedClass("MechJoint", null, "com.framsticks.model.MechJoint"); 13 registry.registerReflectedClass("Neuro", null, "com.framsticks.model.Neuro"); 14 registry.registerReflectedClass("NeuroDef", "n", "com.framsticks.model.NeuroDef"); 15 registry.registerReflectedClass("Part", "p", "com.framsticks.model.Part"); 16 registry.registerReflectedClass("Model", "m", "com.framsticks.model.Model"); 17 registry.registerReflectedClass("Creature", null, "com.framsticks.model.Creature"); 18 registry.registerReflectedClass("Genotype", null, "com.framsticks.model.Genotype"); 19 10 registry 11 .register(MechPart.class) 12 .register(Joint.class) 13 .register(MechJoint.class) 14 .register(Neuro.class) 15 .register(NeuroDef.class) 16 .register(Part.class) 17 .register(Model.class) 18 .register(Creature.class) 19 .register(Genotype.class) 20 .register(World.class); 20 21 } 21 22 } -
java/main/src/main/java/com/framsticks/model/Part.java
r84 r86 2 2 3 3 4 import com.framsticks.params.annotations.FramsClassAnnotation; 5 import com.framsticks.params.annotations.ParamAnnotation; 4 6 import com.framsticks.util.math.Point3d; 5 7 … … 7 9 * The Class Part. 8 10 */ 11 @FramsClassAnnotation(id = "p") 9 12 public class Part extends BasePart { 10 13 11 /** rx, ry, rz*/14 @ParamAnnotation 12 15 public double rx, ry, rz; 16 13 17 14 18 public Point3d getRotation() { return new Point3d(rx, ry, rz); } 15 19 public void setRotation(Point3d r) { rx = r.x; ry = r.y; rz = r.z; } 16 20 17 /** dn */18 public Double density;21 @ParamAnnotation(id = "dn") 22 public double density; 19 23 20 /** ing */21 public Double ingestion;24 @ParamAnnotation(id = "ing") 25 public double ingestion; 22 26 23 /** as */24 public Double assimilation;27 @ParamAnnotation(id = "as") 28 public double assimilation; 25 29 26 /** i */30 @ParamAnnotation(id = "i") 27 31 public String info; 28 32 29 /** Vstyle */33 @ParamAnnotation(id = "Vstyle") 30 34 public String visualizationStyle; 31 35 32 public Double getDn() { return density; }33 public void setDn(Double dn) { density = dn; }36 @ParamAnnotation(id = "vs") 37 public double visualThickness; 34 38 35 public Double getIng() { return ingestion; } 36 public void setIng(Double ing) { ingestion = ing; } 37 38 public Double getAs() { return assimilation; } 39 public void setAs(Double as) { assimilation = as; } 40 41 public String getI() { return info; } 42 public void setI(String i) { info = i; } 43 44 public String getVstyle() { return visualizationStyle; } 45 public void setVstyle(String vstyle) { visualizationStyle = vstyle; } 39 @ParamAnnotation 40 public double vr, vg, vb; 46 41 47 42 } -
java/main/src/main/java/com/framsticks/model/World.java
r77 r86 1 1 package com.framsticks.model; 2 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 5 6 @FramsClassAnnotation 3 7 public class World { 4 8 5 public Integer wrldbnd; 6 public Double wrldwat; 7 public String faces; 9 @ParamAnnotation(id = "wrldbnd") 10 public int boundaries; 11 12 @ParamAnnotation(id = "wrldwat") 13 public double waterLevel; 8 14 9 15 16 @ParamAnnotation(id = "wrldtyp") 17 public int type; 18 19 @ParamAnnotation(id = "wrldsiz") 20 public double size; 21 22 @ParamAnnotation(id = "wrldmap") 23 public String map; 24 25 @ParamAnnotation(id = "wrldg") 26 public double gravity; 27 28 @ParamAnnotation(id = "simtype") 29 public int simulationEngine; 30 31 @ParamAnnotation(id = "nnspeed") 32 public double neuralNetworkSimulationSpeed; 33 34 @ParamAnnotation 35 public String faces; 10 36 /* 11 37 public static ReflectionAccess createReflection() -
java/main/src/main/java/com/framsticks/observers/Endpoint.java
r85 r86 4 4 import com.framsticks.core.InstanceListener; 5 5 import com.framsticks.core.Path; 6 import com.framsticks.params.FramsClass; 6 import com.framsticks.params.annotations.FramsClassAnnotation; 7 import com.framsticks.params.annotations.ParamAnnotation; 7 8 import com.framsticks.core.ListChange; 8 9 import com.framsticks.util.dispatching.Dispatcher; … … 13 14 * @author Piotr Sniegowski 14 15 */ 16 @FramsClassAnnotation 15 17 public class Endpoint implements Dispatcher<Instance>, InstanceListener { 16 18 private final static Logger log = Logger.getLogger(Endpoint.class.getName()); 17 19 20 @ParamAnnotation 18 21 protected Instance instance; 19 22 protected Observer observer; 23 24 @ParamAnnotation 20 25 protected String name; 21 26 … … 80 85 } 81 86 82 public static void constructFramsClass(FramsClass.Constructor constructor) {83 constructor.method("getName").method("getInstance");84 }85 87 86 88 } -
java/main/src/main/java/com/framsticks/observers/Observer.java
r84 r86 4 4 import com.framsticks.core.Instance; 5 5 import com.framsticks.core.Program; 6 import com.framsticks.params.FramsClass; 6 import com.framsticks.params.annotations.FramsClassAnnotation; 7 import com.framsticks.params.annotations.ParamAnnotation; 7 8 import com.framsticks.util.lang.Casting; 8 9 import org.apache.commons.configuration.Configuration; … … 14 15 * @author Piotr Sniegowski 15 16 */ 17 @FramsClassAnnotation 16 18 public abstract class Observer extends Entity { 17 19 … … 21 23 } 22 24 25 @ParamAnnotation 23 26 protected final Map<String, Endpoint> endpoints = new HashMap<String, Endpoint>(); 24 27 … … 68 71 } 69 72 70 public static void constructFramsClass(FramsClass.Constructor constructor) {71 constructor.method("getEndpoints");72 }73 73 74 74 -
java/main/src/main/java/com/framsticks/params/AccessInterface.java
r84 r86 66 66 Object getSelected(); 67 67 68 AccessInterface cloneAccess() ;68 AccessInterface cloneAccess() throws ConstructionException; 69 69 70 70 Object createAccessee(); -
java/main/src/main/java/com/framsticks/params/ArrayListAccess.java
r85 r86 20 20 21 21 @Override 22 public ArrayListAccess cloneAccess() {22 public ArrayListAccess cloneAccess() throws ConstructionException { 23 23 return new ArrayListAccess(elementAccess.cloneAccess()); 24 24 } -
java/main/src/main/java/com/framsticks/params/FramsClass.java
r85 r86 1 1 package com.framsticks.params; 2 2 3 import com.framsticks.params.types.StringParam; 4 import com.framsticks.parsers.FileSource; 5 import com.framsticks.parsers.Loaders; 6 import com.framsticks.util.lang.Casting; 7 8 import org.apache.log4j.Logger; 9 10 import java.io.InputStream; 11 import java.lang.reflect.*; 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 5 // import com.framsticks.util.FramsticksException; 6 12 7 import java.util.*; 8 9 import javax.annotation.Nonnull; 13 10 14 11 /** … … 24 21 * @author Piotr Sniegowski 25 22 */ 23 @FramsClassAnnotation(id = "class", name = "class") 26 24 public final class FramsClass { 27 28 private final static Logger log = Logger.getLogger(FramsClass.class29 .getName());30 31 /**32 * The Class which represents group.33 */34 25 35 26 /** The offset of the parameter (applied for newly added parameter). */ … … 62 53 63 54 public FramsClass() { 55 64 56 } 65 57 … … 77 69 */ 78 70 public FramsClass append(Param param) { 71 // if (param.hasFlag(Flags.USERHIDDEN)) { 72 // return this; 73 // } 79 74 paramEntryMap.put(param.getId(), param); 80 75 //paramEntryMap.put(param.getInternalId(), param); … … 104 99 } 105 100 101 @ParamAnnotation(id = "desc") 106 102 public String getDescription() { 107 103 return description; … … 130 126 131 127 /** 132 * Gets the group getName.128 * Gets the group name. 133 129 * 134 130 * @param gi 135 131 * the offset of group 136 * @return the group getName132 * @return the group name 137 133 */ 138 134 public String getGroupName(int gi) { … … 142 138 } 143 139 140 @ParamAnnotation 144 141 public String getId() { 145 142 return id; 146 143 } 147 144 145 @ParamAnnotation 148 146 public String getName() { 149 147 return name; … … 152 150 public String getNiceName() { 153 151 return name != null ? name : id; 152 } 153 154 public <T extends Param> T castedParam(@Nonnull final Param param, @Nonnull final Class<T> type, Object name) { 155 if (param == null) { 156 return null; 157 // throw new FramsticksException().msg("param is missing").arg("name", name).arg("in", this); 158 } 159 if (!type.isInstance(param)) { 160 return null; 161 // throw new FramsticksException().msg("wrong type of param").arg("actual", param.getClass()).arg("requested", type).arg("in", this); 162 } 163 return type.cast(param); 154 164 } 155 165 … … 161 171 * @return the param entry 162 172 */ 163 public <T extends Param> T getParamEntry(int i, Class<T> type) { 164 if (i < 0 || i >= paramList.size()) { 165 return null; 166 } 167 return Casting.tryCast(type, paramList.get(i)); 173 public <T extends Param> T getParamEntry(final int i, @Nonnull final Class<T> type) { 174 return castedParam(getParam(i), type, i); 168 175 } 169 176 … … 175 182 * @return the param entry 176 183 */ 177 public <T extends Param> T getParamEntry(String id, Class<T> type) { 178 return Casting.tryCast(type, paramEntryMap.get(id)); 184 public <T extends Param> T getParamEntry(@Nonnull final String id, @Nonnull final Class<T> type) { 185 return castedParam(getParam(id), type, id); 186 } 187 188 public Param getParam(int i) { 189 if (i < 0 || i >= paramList.size()) { 190 return null; 191 } 192 return paramList.get(i); 193 } 194 195 public Param getParam(String id) { 196 if (!paramEntryMap.containsKey(id)) { 197 return null; 198 } 199 return paramEntryMap.get(id); 179 200 } 180 201 … … 188 209 } 189 210 190 public static FramsClass getFramsClass() { 191 return new FramsClass("class", "class", null) 192 .append(Param.build().id("name").name("Name").type(StringParam.class)) 193 .append(Param.build().id("id").name("id").type(StringParam.class)) 194 .append(Param.build().id("desc").name("Description").type(StringParam.class)); 195 } 196 211 @ParamAnnotation 197 212 public void setId(String id) { 198 213 this.id = id; 199 214 } 200 215 216 @ParamAnnotation 201 217 public void setName(String name) { 202 218 this.name = name; 203 219 } 204 220 221 @ParamAnnotation(id = "desc") 205 222 public void setDescription(String description) { 206 223 this.description = description; 207 224 } 208 209 public static String getParamTypeForNativeType(Type type) {210 if (type instanceof ParameterizedType) {211 ParameterizedType p = (ParameterizedType) type;212 Type rawType = p.getRawType();213 if (rawType.equals(Map.class)) {214 Type containedType = p.getActualTypeArguments()[1];215 //TODO uid should be passed along during construction216 if (containedType instanceof Class) {217 return "l " + ((Class<?>) containedType).getCanonicalName()218 + " name";219 }220 }221 if (rawType.equals(List.class)) {222 Type containedType = p.getActualTypeArguments()[0];223 if (containedType instanceof Class) {224 return "l " + ((Class<?>) containedType).getCanonicalName();225 }226 }227 return null;228 }229 230 if (type.equals(Integer.class)) {231 return "d";232 }233 if (type.equals(String.class)) {234 return "s";235 }236 if (type.equals(Double.class)) {237 return "f";238 }239 if (type instanceof Class) {240 return "o " + ((Class<?>) type).getCanonicalName();241 }242 return null;243 }244 245 public static final String GENERATE_HELP_PREFIX = "automatically generated from: ";246 247 public static FramsClass readFromStream(InputStream stream) {248 return Loaders.loadFramsClass(new FileSource(stream));249 }250 251 public static class Constructor {252 protected final FramsClass result;253 protected Class<?> currentClass;254 255 public Constructor(Class<?> src, String name) {256 result = new FramsClass(name, name, GENERATE_HELP_PREFIX257 + src.toString());258 currentClass = src;259 while (currentClass != null) {260 try {261 currentClass.getMethod("constructFramsClass", Constructor.class).invoke(null, this);262 } catch (IllegalAccessException | IllegalArgumentException263 | InvocationTargetException | NoSuchMethodException264 | SecurityException e) {265 log.debug("failed to use constructFramsClass static method (skipping): ", e);266 }267 currentClass = currentClass.getSuperclass();268 }269 currentClass = src;270 }271 272 public final FramsClass getResult() {273 return result;274 }275 276 public Constructor allFields() {277 for (Field f : currentClass.getFields()) {278 field(f.getName());279 }280 return this;281 }282 283 public Constructor method(String name, Class<?> ... arguments) {284 try {285 Method method = currentClass.getMethod(name, arguments);286 if (!Modifier.isPublic(method.getModifiers())) {287 return this;288 }289 String returnParamClass = getParamTypeForNativeType(method.getGenericReturnType());290 if (returnParamClass == null) {291 return this;292 }293 Class<?>[] args = method.getParameterTypes();294 if (args.length == 0) {295 if (method.getName().startsWith("get")) {296 String fieldName = method.getName().substring(3, 4).toLowerCase() + method.getName().substring(4);297 Param param = Param.build().type(returnParamClass).name(fieldName).id(fieldName).help(GENERATE_HELP_PREFIX + method.toString()).finish();298 assert param != null;299 result.append(param);300 return this;301 }302 return this;303 }304 return this;305 } catch (NoSuchMethodException e) {306 log.fatal("method " + name + " was not found in " + currentClass.toString());307 }308 return this;309 }310 public Constructor field(String name) {311 try {312 Field field = currentClass.getField(name);313 if (!Modifier.isPublic(field.getModifiers())) {314 return this;315 }316 String paramClass = getParamTypeForNativeType(field.getGenericType());317 if (paramClass == null) {318 return this;319 }320 Param param = Param.build().type(paramClass).name(field.getName()).id(field.getName()).help(GENERATE_HELP_PREFIX + field.toString()).finish();321 assert param != null;322 result.append(param);323 return this;324 } catch (NoSuchFieldException e) {325 log.fatal("field " + name + " was not found in " + currentClass.toString());326 }327 return this;328 }329 }330 225 } -
java/main/src/main/java/com/framsticks/params/ListSource.java
r84 r86 1 1 package com.framsticks.params; 2 2 3 import java.util.ArrayList; 3 4 import java.util.Iterator; 4 5 import java.util.List; … … 7 8 8 9 private Iterator<String> iterator = null; 9 10 //private final List<String> source; 10 11 11 12 public ListSource(List<String> source) { 12 13 13 //this.source = source; 14 iterator = source.iterator(); 14 15 } 15 16 16 17 @Override 17 18 public String getFilename() { 18 19 return "<net>"; 19 20 } 20 21 21 @Override 22 public String readLine() { 23 assert iterator != null; 22 @Override 23 public String readLine() { 24 // if (iterator == null) { 25 // return null; 26 // } 27 assert iterator != null; 24 28 if (iterator.hasNext()) { 25 29 return iterator.next(); … … 28 32 } 29 33 30 31 34 @Override 35 public String demangleInclude(String include) { 32 36 return null; 33 37 } 34 38 35 36 39 @Override 40 public SourceInterface openInclude(String include) { 37 41 return null; 38 42 } 39 43 40 @Override 41 public void close() { 42 iterator = null; 44 @Override 45 public void close() { 46 iterator = null; 47 } 48 49 public static ListSource createFrom(String... lines) { 50 List<String> list = new ArrayList<String>(); 51 for (String l : lines) { 52 list.add(l); 53 } 54 return new ListSource(list); 55 } 56 57 @Override 58 public boolean isClosed() { 59 return iterator == null; 43 60 } 44 61 } -
java/main/src/main/java/com/framsticks/params/Param.java
r85 r86 1 1 package com.framsticks.params; 2 2 3 3 4 import com.framsticks.params.types.DecimalParam; -
java/main/src/main/java/com/framsticks/params/ParamBuilder.java
r85 r86 1 1 package com.framsticks.params; 2 2 3 import com.framsticks.params.annotations.FramsClassAnnotation; 4 import com.framsticks.params.annotations.ParamAnnotation; 3 5 import com.framsticks.params.types.*; 4 6 import com.framsticks.util.lang.Numbers; … … 8 10 import java.util.ArrayList; 9 11 import java.util.Arrays; 12 10 13 11 14 /** … … 18 21 */ 19 22 23 @FramsClassAnnotation(name = "prop", id = "prop") 20 24 public class ParamBuilder { 21 25 private final static Logger log = Logger.getLogger(ParamBuilder.class.getName()); … … 28 32 private static final String FLAGS_FIELD = "flags"; 29 33 30 /** The parameter getId. */34 /** The parameter id. */ 31 35 private String id; 32 36 33 37 /** 34 * The parameter internal getId. It's set by a user to use user's own getId in38 * The parameter internal id. It's set by a user to use user's own id in 35 39 * code 36 40 */ … … 40 44 private Integer group = 0; 41 45 42 /** The getFlags stored as a bit sum. */46 /** The flags stored as a bit sum. */ 43 47 private Integer flags = 0; 44 48 45 /** The parameter getName. */49 /** The parameter name. */ 46 50 private String name; 47 51 48 /** The getHelp (description) concerning parameter. */52 /** The help (description) concerning parameter. */ 49 53 private String help; 50 54 51 /** The getType of parameter. */55 /** The type of parameter. */ 52 56 private Class<? extends Param> paramType; 53 57 54 58 private Param param; 55 59 private PrimitiveParam primitiveParam; 56 57 ParamBuilder() { 60 private String typeString; 61 62 public ParamBuilder() { 58 63 } 59 64 … … 76 81 } 77 82 83 @ParamAnnotation 78 84 public ParamBuilder id(String id) { 79 85 this.id = id; … … 87 93 primitiveParam = (PrimitiveParam) param; 88 94 } 95 typeString = param.getFramsTypeName(); 89 96 return this; 90 97 } 91 98 92 99 public <T extends Param> ParamBuilder type(Class<T> type) { 100 assert type != null; 93 101 try { 94 102 return internalSetType(type, type.newInstance()); … … 104 112 105 113 114 /** 115 * @return the id 116 */ 117 @ParamAnnotation 118 public String getId() { 119 return id; 120 } 121 106 122 public ParamBuilder setInternalId(String internalId) { 107 123 this.internalId = internalId; … … 109 125 } 110 126 127 @ParamAnnotation 111 128 public ParamBuilder group(Integer group) { 112 129 this.group = group; … … 114 131 } 115 132 133 @ParamAnnotation 116 134 public ParamBuilder flags(Integer flags) { 117 135 this.flags = flags; … … 119 137 } 120 138 139 @ParamAnnotation 121 140 public ParamBuilder name(String name) { 122 141 this.name = name; … … 143 162 } 144 163 164 @ParamAnnotation 145 165 public ParamBuilder type(String type) { 166 typeString = type; 146 167 147 168 log.trace("parsing type: " + type); … … 233 254 } 234 255 256 @ParamAnnotation 235 257 public ParamBuilder help(String help) { 236 258 this.help = help; 237 259 return this; 260 } 261 262 /** 263 * @return the group 264 */ 265 @ParamAnnotation 266 public Integer getGroup() { 267 return group; 268 } 269 270 /** 271 * @return the flags 272 */ 273 @ParamAnnotation 274 public Integer getFlags() { 275 return flags; 276 } 277 278 /** 279 * @return the name 280 */ 281 @ParamAnnotation 282 public String getName() { 283 return name; 284 } 285 286 /** 287 * @return the help 288 */ 289 @ParamAnnotation 290 public String getHelp() { 291 return help; 292 } 293 294 @ParamAnnotation 295 public String getType() { 296 return typeString; 238 297 } 239 298 … … 328 387 329 388 330 public static FramsClass getFramsClass() {331 return new FramsClass("prop", "prop", null)332 .append(Param.build().id("name").name("Name").type(StringParam.class))333 .append(Param.build().id("id").name("Id").type(StringParam.class))334 .append(Param.build().id("type").name("Type").type(StringParam.class))335 .append(Param.build().id("help").name("Help").type(StringParam.class))336 .append(Param.build().id("group").name("Group").type(DecimalParam.class))337 .append(Param.build().id("flags").name("Flags").type(DecimalParam.class));338 }339 389 340 390 } -
java/main/src/main/java/com/framsticks/params/ReflectionAccess.java
r85 r86 3 3 import java.lang.reflect.Field; 4 4 import java.lang.reflect.InvocationTargetException; 5 import java.lang.reflect.Modifier; 5 import java.lang.reflect.Method; 6 import java.util.HashMap; 7 import java.util.Map; 6 8 7 9 import org.apache.log4j.Logger; 8 10 9 import com.framsticks.util.lang.Containers; 10 11 import com.framsticks.util.FramsticksException; 12 13 import static com.framsticks.util.lang.Containers.*; 11 14 12 15 /** … … 19 22 */ 20 23 public class ReflectionAccess extends SimpleAbstractAccess { 21 private final static Logger log = Logger.getLogger(ReflectionAccess.class.getName()); 24 private final static Logger log = Logger.getLogger(ReflectionAccess.class 25 .getName()); 22 26 23 27 protected final Class<?> reflectedClass; 24 28 private Object object; 25 29 26 public ReflectionAccess(Class<?> reflectedClass, FramsClass framsClass) { 30 31 protected interface ReflectedSetter { 32 public <T> void set(Object object, T value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException; 33 } 34 35 protected interface ReflectedGetter { 36 public abstract <T> T get(Object object, Class<T> type) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException; 37 } 38 39 protected static class ReflectedValueParam { 40 public ReflectedSetter setter; 41 public ReflectedGetter getter; 42 } 43 44 protected final Map<ValueParam, ReflectedValueParam> reflectedValueParams = new HashMap<>(); 45 46 public ReflectionAccess(Class<?> reflectedClass) throws ConstructionException { 47 this(reflectedClass, FramsClassBuilder.buildForClass(reflectedClass)); 48 } 49 50 public static boolean typeMatch(Class<?> a, Class<?> b) { 51 assert !b.isPrimitive(); 52 if (!a.isPrimitive()) { 53 return a.equals(b); 54 } 55 56 if (a.equals(int.class)) { 57 return b.equals(Integer.class); 58 } 59 if (a.equals(double.class)) { 60 return b.equals(Double.class); 61 } 62 if (a.equals(boolean.class)) { 63 return b.equals(Boolean.class); 64 } 65 assert false; 66 return false; 67 } 68 69 public ReflectionAccess(Class<?> reflectedClass, FramsClass framsClass) throws ConstructionException { 27 70 this.reflectedClass = reflectedClass; 28 71 setFramsClass(framsClass); 29 } 30 31 private static String accessorName(boolean get, String id) { 32 return (get ? "get" : "set") + id.substring(0, 1).toUpperCase() + id.substring(1); 33 } 72 73 Map<String, ParamCandidate> candidates = ParamCandidate.getAllCandidates(reflectedClass); 74 75 try { 76 for (final ValueParam vp : filterInstanceof(framsClass.getParamEntries(), ValueParam.class)) { 77 if (!candidates.containsKey(vp.getId())) { 78 throw new ConstructionException().msg("missing candidate for param").arg("param", vp); 79 } 80 ParamCandidate pc = candidates.get(vp.getId()); 81 if (pc.isReadOnly() && !vp.hasFlag(Flags.READONLY)) { 82 throw new ConstructionException().msg("readonly state conflict").arg("param", vp); 83 } 84 if (!typeMatch(pc.getRawType(), vp.getStorageType())) { 85 throw new ConstructionException().msg("types mismatch for param").arg("param", vp).arg("candidate", pc.getType()).arg("storage", vp.getStorageType()); 86 } 87 88 ReflectedValueParam rvp = new ReflectedValueParam(); 89 reflectedValueParams.put(vp, rvp); 90 final boolean primitive = pc.isPrimitive(); 91 if (pc.getField() != null) { 92 final Field f = pc.getField(); 93 rvp.getter = new ReflectedGetter() { 94 @Override 95 public <T> T get(Object object, Class<T> type) throws IllegalArgumentException, IllegalAccessException { 96 return type.cast(f.get(object)); 97 } 98 }; 99 if (!pc.isFinal()) { 100 rvp.setter = new ReflectedSetter() { 101 @Override 102 public <T> void set(Object object, T value) throws IllegalArgumentException, IllegalAccessException { 103 if (value == null && primitive) { 104 throw new FramsticksException().msg("setting null to primitive value"); 105 } 106 f.set(object, value); 107 } 108 }; 109 } 110 } else { 111 final Method g = pc.getGetter(); 112 113 rvp.getter = new ReflectedGetter() { 114 @Override 115 public <T> T get(Object object, Class<T> type) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { 116 return type.cast(g.invoke(object)); 117 } 118 }; 119 120 if (!pc.isFinal()) { 121 final Method s = pc.getSetter(); 122 rvp.setter = new ReflectedSetter() { 123 @Override 124 public <T> void set(Object object, T value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { 125 if (value == null && primitive) { 126 throw new FramsticksException().msg("setting null to primitive value"); 127 } 128 s.invoke(object, value); 129 } 130 }; 131 } 132 } 133 } 134 } catch (ConstructionException e) { 135 throw e.arg("java class", reflectedClass).arg("framsClass", framsClass); 136 } 137 } 138 139 // private static String accessorName(boolean get, String id) { 140 // return (get ? "get" : "set") + id.substring(0, 1).toUpperCase() + id.substring(1); 141 // } 34 142 35 143 @Override 36 144 public <T> T get(ValueParam param, Class<T> type) { 37 if (object == null) { 38 return null; 39 } 40 try { 41 //TODO: use internal id, if present 42 String id = param.getId(); 145 try { 43 146 try { 44 return type.cast(reflectedClass.getField(id).get(object)); 45 } catch (NoSuchFieldException ignored) { 46 } 47 try { 48 return type.cast(reflectedClass.getMethod(accessorName(true, id)).invoke(object)); 49 } catch (NoSuchMethodException | InvocationTargetException ex) { 50 //e.printStackTrace(); 51 } 52 try { 53 return type.cast(reflectedClass.getMethod(id).invoke(object)); 54 } catch (NoSuchMethodException | InvocationTargetException ex) { 55 //e.printStackTrace(); 56 } 57 58 } catch (IllegalAccessException e) { 59 log.warn("illegal access error occurred while trying to access returnedObject"); 60 e.printStackTrace(); 61 } catch (ClassCastException ignored) { 62 63 } 64 return null; 147 if (object == null) { 148 throw new FramsticksException().msg("no object set"); 149 } 150 151 return reflectedValueParams.get(param).getter.get(object, type); 152 } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { 153 throw new FramsticksException().msg("failed to get").cause(e); 154 } 155 } catch (FramsticksException e) { 156 throw e.arg("param", param).arg("type", type).arg("access", this); 157 } 65 158 } 66 159 … … 71 164 72 165 private <T> void setValue(ValueParam param, T value) { 73 if (object == null) { 74 return; 75 } 76 try { 77 String id = param.getId(); 166 try { 78 167 try { 79 Field f = reflectedClass.getField(id); 80 Class<?> t = f.getType(); 81 if (Modifier.isFinal(f.getModifiers())) { 82 return; 83 } 84 if (value != null || (!t.isPrimitive())) { 85 f.set(object, value); 86 } 87 return; 88 } catch (NoSuchFieldException ignored) { 89 } 90 try { 91 reflectedClass.getMethod(accessorName(false, id), new Class[]{param.getStorageType()}).invoke(object, value); 92 } catch (InvocationTargetException | NoSuchMethodException ignored) { 93 } 94 try { 95 reflectedClass.getMethod(id, new Class[]{param.getStorageType()}).invoke(object, value); 96 } catch (InvocationTargetException | NoSuchMethodException ignored) { 97 } 98 } catch (Exception ex) { 99 ex.printStackTrace(); 168 if (object == null) { 169 throw new FramsticksException().msg("no object set"); 170 } 171 ReflectedSetter s = reflectedValueParams.get(param).setter; 172 if (s == null) { 173 throw new FramsticksException().msg("trying to set final"); 174 } 175 s.set(object, value); 176 } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) { 177 throw new FramsticksException().msg("failed to set").cause(e); 178 } 179 } catch (FramsticksException e) { 180 throw e.arg("param", param).arg("value", value).arg("access", this); 100 181 } 101 182 } … … 114 195 115 196 try { 116 for (ValueParam p : Containers.filterInstanceof(framsClass.getParamEntries(), ValueParam.class)) {197 for (ValueParam p : filterInstanceof(framsClass.getParamEntries(), ValueParam.class)) { 117 198 setValue(p, p.getDef(Object.class)); 118 199 } … … 159 240 160 241 @Override 161 public ReflectionAccess cloneAccess() {242 public ReflectionAccess cloneAccess() throws ConstructionException { 162 243 return new ReflectionAccess(reflectedClass, framsClass); 163 244 } … … 173 254 return null; 174 255 } 256 257 @Override 258 public String toString() { 259 StringBuilder b = new StringBuilder(); 260 b.append(framsClass); 261 if (object != null) { 262 b.append("(").append(object).append(")"); 263 } 264 return b.toString(); 265 } 266 175 267 } 268 -
java/main/src/main/java/com/framsticks/params/Registry.java
r84 r86 2 2 3 3 import org.apache.log4j.Logger; 4 5 import com.framsticks.params.annotations.FramsClassAnnotation; 4 6 5 7 import java.util.HashMap; … … 35 37 } 36 38 37 public AccessInterface createAccess(String name, FramsClass framsClass) { 39 public Registry register(Class<?> reflectedClass) { 40 FramsClassAnnotation a = reflectedClass.getAnnotation(FramsClassAnnotation.class); 41 if (a == null) { 42 log.error("class is not annotated: " + reflectedClass); 43 return this; 44 } 45 46 registerReflectedClass(FramsClassBuilder.getName(a, reflectedClass), FramsClassBuilder.getId(a, reflectedClass), reflectedClass); 47 48 return this; 49 } 50 51 public AccessInterface createAccess(String name, FramsClass framsClass) throws ConstructionException { 38 52 if (reflectedClasses.containsKey(name)) { 39 53 return new ReflectionAccess(reflectedClasses.get(name), framsClass); … … 66 80 67 81 public static AccessInterface wrapAccessWithListIfNeeded(CompositeParam param, AccessInterface access) { 68 82 if (access == null) { 69 83 return null; 70 84 } 71 85 return param.prepareAccessInterface(access); 72 86 } 73 87 74 public AccessInterface prepareAccess(CompositeParam param){75 76 88 public AccessInterface prepareAccess(CompositeParam param) throws ConstructionException { 89 return wrapAccessWithListIfNeeded(param, createAccess(param.getContainedTypeName())); 90 } 77 91 78 public AccessInterface createAccess(String name) {92 public AccessInterface createAccess(String name) throws ConstructionException { 79 93 if (name == null) { 80 94 return null; -
java/main/src/main/java/com/framsticks/params/SimpleAbstractAccess.java
r84 r86 65 65 @Override 66 66 public Param getParam(int i) { 67 return framsClass.getParam Entry(i, Param.class);67 return framsClass.getParam(i); 68 68 } 69 69 70 70 @Override 71 71 public Param getParam(String id) { 72 return framsClass.getParam Entry(id, Param.class);72 return framsClass.getParam(id); 73 73 } 74 74 … … 80 80 @Override 81 81 public <T> T get(int i, Class<T> type) { 82 Param p = getParam(i); 83 assert p instanceof ValueParam; 84 return get((ValueParam) p, type); 82 return get(framsClass.getParamEntry(i, ValueParam.class), type); 85 83 } 86 84 87 85 @Override 88 86 public <T> T get(String id, Class<T> type) { 89 Param p = getParam(id); 90 assert p instanceof ValueParam; 91 return get((ValueParam) p, type); 87 return get(framsClass.getParamEntry(id, ValueParam.class), type); 88 } 89 90 @Override 91 public <T> int set(int i, T value) { 92 return set(framsClass.getParamEntry(i, ValueParam.class), value); 92 93 } 93 94 94 95 @Override 95 96 public <T> int set(String id, T value) { 96 Param p = getParam(id); 97 assert p instanceof ValueParam; 98 return set((ValueParam) p, value); 99 } 100 101 @Override 102 public <T> int set(int i, T value) { 103 Param p = getParam(i); 104 assert p instanceof ValueParam; 105 return set((ValueParam) p, value); 97 return set(framsClass.getParamEntry(id, ValueParam.class), value); 106 98 } 107 99 … … 115 107 ReassignResult<?> result = param.reassign(value, oldValue); 116 108 Object casted = result.getValue(); 117 if ( casted != oldValue) {109 if (!casted.equals(oldValue)) { 118 110 internalSet(param, casted); 119 111 } -
java/main/src/main/java/com/framsticks/params/SimpleSource.java
r77 r86 6 6 public class SimpleSource implements SourceInterface { 7 7 8 finalString content;8 String content; 9 9 int cursor; 10 10 11 11 public SimpleSource(String content) { 12 12 this.content = content; 13 13 cursor = 0; 14 14 } 15 15 … … 21 21 @Override 22 22 public String readLine() { 23 assert !isClosed(); 23 24 if (cursor >= content.length()) { 24 25 return null; … … 45 46 @Override 46 47 public void close() { 48 content = null; 49 } 47 50 51 //TODO no magic numbers 52 @Override 53 public boolean isClosed() { 54 return content != null; 48 55 } 56 49 57 } -
java/main/src/main/java/com/framsticks/params/SourceInterface.java
r77 r86 7 7 SourceInterface openInclude(String include); 8 8 void close(); 9 boolean isClosed(); 9 10 } -
java/main/src/main/java/com/framsticks/params/Util.java
r84 r86 3 3 import java.util.ArrayList; 4 4 import java.util.List; 5 5 6 6 7 import static com.framsticks.util.lang.Containers.filterInstanceof; … … 44 45 return copied; 45 46 } 47 46 48 } -
java/main/src/main/java/com/framsticks/parsers/F0Parser.java
r85 r86 17 17 import com.framsticks.params.PrimitiveParam; 18 18 import com.framsticks.util.lang.Containers; 19 import com.framsticks.util.lang.Exceptions;20 19 import com.framsticks.util.lang.Pair; 21 20 import com.framsticks.util.lang.Strings; … … 119 118 120 119 private static void warn(int lineNumber, String message, Exception e) { 121 log.warn("in line " + lineNumber + " the following error occurred (" + message + "): " + e + "\n" + Exceptions.printStackTrace(e));120 log.warn("in line " + lineNumber + " the following error occurred (" + message + "): " + e); 122 121 } 123 122 -
java/main/src/main/java/com/framsticks/parsers/FileSource.java
r85 r86 9 9 public class FileSource implements SourceInterface { 10 10 11 private finalBufferedReader reader;11 private BufferedReader reader; 12 12 private final String filename; 13 13 14 p rotectedFileSource(InputStream stream, String filename) {14 public FileSource(InputStream stream, String filename) { 15 15 this.filename = filename; 16 16 this.reader = new BufferedReader(new InputStreamReader(stream, Encoding.getFramsticksCharset())); … … 28 28 public String readLine() 29 29 { 30 assert !isClosed(); 30 31 try 31 32 { … … 80 81 81 82 } 83 reader = null; 84 } 85 86 @Override 87 public boolean isClosed() { 88 return reader == null; 82 89 } 83 90 -
java/main/src/main/java/com/framsticks/parsers/Loaders.java
r85 r86 2 2 3 3 import com.framsticks.params.*; 4 import org.apache.log4j.Logger;4 // import org.apache.log4j.Logger; 5 5 6 6 /** … … 9 9 public class Loaders { 10 10 11 private static final Logger log = Logger.getLogger(Loaders.class.getName());11 // private static final Logger log = Logger.getLogger(Loaders.class.getName()); 12 12 13 public static FramsClass loadFramsClass(SourceInterface source) {13 public static FramsClass loadFramsClass(SourceInterface source) throws ConstructionException { 14 14 MultiParamLoader loader = new MultiParamLoader(); 15 15 loader.setNewSource(source); … … 17 17 FramsClass result = new FramsClass(); 18 18 19 AccessInterface framsClassAccess = new ReflectionAccess(FramsClass.class, FramsClass .getFramsClass());20 AccessInterface paramBuilderAccess = new ReflectionAccess(ParamBuilder.class, ParamBuilder.getFramsClass());19 AccessInterface framsClassAccess = new ReflectionAccess(FramsClass.class, FramsClassBuilder.buildForClass(FramsClass.class)); 20 AccessInterface paramBuilderAccess = new ReflectionAccess(ParamBuilder.class, FramsClassBuilder.buildForClass(ParamBuilder.class)); 21 21 framsClassAccess.select(result); 22 22 loader.addAccessInterface(framsClassAccess); … … 41 41 return result; 42 42 } catch (Exception e) { 43 log.error("an error occurred while loading class description: " + e + " before " + source.readLine()); 44 e.printStackTrace(); 43 throw new ConstructionException().msg("an error occurred while loading class description").arg("before", loader.getCurrentLine()).cause(e); 45 44 } 46 return null;47 48 49 45 } 50 46 } -
java/main/src/main/java/com/framsticks/parsers/MultiParamLoader.java
r77 r86 9 9 10 10 public class MultiParamLoader { 11 private final static Logger logger = Logger 12 .getLogger(MultiParamLoader.class.getName()); 11 private final static Logger log = Logger.getLogger(MultiParamLoader.class); 13 12 14 13 /** … … 56 55 * Status of current execution. 57 56 */ 58 private Status status; 57 private Status status = Status.None; 58 59 private void setStatus(Status status) { 60 log.trace("changing status: " + this.status.toString() + " -> " + status.toString()); 61 this.status = status; 62 } 59 63 60 64 /** … … 62 66 */ 63 67 private SourceInterface currentSource; 68 69 protected String currentLine; 64 70 65 71 … … 86 92 private String lastUnknownObjectName; 87 93 94 /** 95 * @return the currentLine 96 */ 97 public String getCurrentLine() { 98 return currentLine; 99 } 100 88 101 public MultiParamLoader() { 89 102 … … 94 107 */ 95 108 public Status go() throws Exception { 96 log ger.trace("go");109 log.trace("go"); 97 110 98 111 while (!isFinished()) { … … 106 119 107 120 // read data 108 String line = currentSource.readLine();121 currentLine = currentSource.readLine(); 109 122 110 123 // end of file 111 if ( line == null) {124 if (currentLine == null) { 112 125 if (!returnFromIncluded()) { 113 126 finish(); … … 117 130 } 118 131 } 132 log.trace("read line: " + currentLine); 119 133 120 134 // empty line 121 if ( line.length() == 0) {135 if (currentLine.length() == 0) { 122 136 continue; 123 137 } 124 138 125 139 // check if some file should be included 126 if (isIncludeLine( line) == LoopAction.Continue) {140 if (isIncludeLine(currentLine) == LoopAction.Continue) { 127 141 continue; 128 142 } 129 143 130 144 // check if should break on comment 131 if (isCommentLine( line) == LoopAction.Break) {145 if (isCommentLine(currentLine) == LoopAction.Break) { 132 146 break; 133 147 } 134 148 135 149 // get class getName 136 if (changeCurrentParamInterface(line) == LoopAction.Break) { 150 LoopAction action = changeCurrentParamInterface(currentLine); 151 if (action == LoopAction.Break) { 137 152 break; 138 153 } 154 if (action == LoopAction.Continue) { 155 continue; 156 } 157 log.warn("unknown line: " + currentLine); 139 158 } 140 159 … … 145 164 * Checks whether the reader found a known or unknown object and execution 146 165 * should be passed to it. 166 * @throws Exception 147 167 */ 148 168 private LoopAction tryReadObject() throws Exception { … … 150 170 || (status == Status.BeforeUnknown && lastAccessInterface != null)) { 151 171 // found object - let it load data 152 if (lastAccessInterface.getSelected() == null) { 153 lastAccessInterface.select(lastAccessInterface.createAccessee()); 154 } 172 if (lastAccessInterface.getSelected() == null) { 173 lastAccessInterface.select(lastAccessInterface.createAccessee()); 174 } 175 log.trace("loading into " + lastAccessInterface); 155 176 lastAccessInterface.load(currentSource); 156 177 … … 162 183 return LoopAction.Continue; 163 184 } else if (status == Status.BeforeUnknown) { 164 log ger.info("Omitting unknown object: " + lastUnknownObjectName);185 log.warn("omitting unknown object: " + lastUnknownObjectName); 165 186 166 187 // found unknown object 167 188 emptyParam.load(currentSource); 168 s tatus = Status.AfterObject;189 setStatus(Status.AfterObject); 169 190 170 191 return LoopAction.Continue; … … 185 206 int beg = line.indexOf('\"'); 186 207 if (beg == -1) { 187 log ger.info("Wanted to include some file, but the format is incorrect");208 log.info("Wanted to include some file, but the format is incorrect"); 188 209 return LoopAction.Continue; 189 210 } … … 192 213 int end = includeFileName.indexOf('\"'); 193 214 if (end == -1) { 194 log ger.info("Wanted to include some file, but the format is incorrect");215 log.info("Wanted to include some file, but the format is incorrect"); 195 216 return LoopAction.Continue; 196 217 } … … 235 256 if (lastAccessInterface != null) { 236 257 if (isBreakCondition(Status.BeforeObject)) { 237 log ger.info("Breaking before object");258 log.debug("breaking before object"); 238 259 return LoopAction.Break; 260 } else { 261 return LoopAction.Continue; 239 262 } 240 263 } else { 241 264 lastUnknownObjectName = typeName; 242 265 if (isBreakCondition(Status.BeforeUnknown)) { 243 log ger.info("Breaking before unknown");266 log.debug("breaking before unknown"); 244 267 return LoopAction.Break; 268 } else { 269 return LoopAction.Continue; 245 270 } 246 271 } … … 279 304 280 305 private void finish() { 306 log.trace("finishing"); 281 307 if (currentSource != null) { 282 308 currentSource.close(); 283 309 } 284 310 285 s tatus = Status.Finished;311 setStatus(Status.Finished); 286 312 } 287 313 … … 291 317 292 318 public boolean setNewSource(SourceInterface source) { 293 log ger.debug("switching current source to " + source.getFilename() + "...");319 log.debug("switching current source to " + source.getFilename() + "..."); 294 320 295 321 currentSource = source; 296 s tatus = Status.Loading;322 setStatus(Status.Loading); 297 323 298 324 return true; … … 311 337 // check if it is already included and break if it is 312 338 if (isAlreadyIncluded(includeFilename)) { 313 log ger.debug("circular reference ignored (" + includeFilename339 log.debug("circular reference ignored (" + includeFilename 314 340 + ")"); 315 341 return; 316 342 } 317 343 318 log ger.info("including file " + includeFilename + "...");344 log.info("including file " + includeFilename + "..."); 319 345 320 346 SourceInterface newSource = currentSource.openInclude(includeFilename); … … 335 361 for (String file : fileStack) { 336 362 if (filename.equals(file)) { 337 log ger.warn("file " + filename + " was already included");363 log.warn("file " + filename + " was already included"); 338 364 return true; 339 365 } … … 366 392 */ 367 393 private boolean isBreakCondition(Status condition) { 368 s tatus = condition;394 setStatus(condition); 369 395 return breakConditions.contains(condition); 370 396 } 371 397 372 398 public Object returnObject() { 399 assert lastAccessInterface != null; 373 400 Object result = lastAccessInterface.getSelected(); 374 401 if (result == null) { 375 402 return null; 376 403 } 377 404 lastAccessInterface.select(null); 378 405 return result; 379 406 } -
java/main/src/main/java/com/framsticks/parsers/Savers.java
r84 r86 10 10 public static void saveFramsClass(SinkInterface sink, FramsClass framsClass) { 11 11 12 AccessInterface framsClassAccess = new ReflectionAccess(FramsClass.class , FramsClass.getFramsClass());13 AccessInterface paramAccess = new ReflectionAccess(Param.class , Param.getFramsClass());12 AccessInterface framsClassAccess = new ReflectionAccess(FramsClass.class); 13 AccessInterface paramAccess = new ReflectionAccess(Param.class); 14 14 framsClassAccess.select(framsClass); 15 15 framsClassAccess.save(sink); -
java/main/src/main/java/com/framsticks/portals/Portal.java
r85 r86 2 2 3 3 import com.framsticks.observers.Observer; 4 import com.framsticks.params.FramsClass; 4 import com.framsticks.params.annotations.FramsClassAnnotation; 5 import com.framsticks.params.annotations.ParamAnnotation; 5 6 import com.framsticks.util.PeriodicTask; 6 7 import org.apache.log4j.Logger; … … 10 11 * @author Piotr Sniegowski 11 12 */ 13 @FramsClassAnnotation 12 14 public class Portal extends Observer { 13 15 14 16 private final static Logger log = Logger.getLogger(Portal.class.getName()); 15 17 18 @ParamAnnotation 16 19 public Integer counter = 0; 17 20 … … 38 41 } 39 42 43 @ParamAnnotation(id = "counter_squared", name = "Counter Squared") 40 44 public Double getCounterSquared() { 41 45 return (double)(counter * counter); 42 46 } 43 47 44 public static void constructFramsClass(FramsClass.Constructor constructor) {45 constructor.method("getCounterSquared").field("counter");46 }47 48 } -
java/main/src/main/java/com/framsticks/util/lang/Containers.java
r84 r86 4 4 import java.util.Iterator; 5 5 import java.util.List; 6 6 7 import org.apache.commons.collections.functors.InstanceofPredicate; 8 import org.apache.commons.collections.functors.NotPredicate; 7 9 import org.apache.commons.collections.iterators.FilterIterator; 8 10 … … 20 22 } 21 23 22 @SuppressWarnings("unchecked")23 24 public static <T> Iterable<T> filterInstanceof(Iterator<? super T> i, Class<T> type) { 24 25 return new IterableIterator<T>(new FilterIterator(i, new InstanceofPredicate(type))); 25 26 } 26 27 27 @SuppressWarnings("unchecked")28 28 public static <T> Iterable<T> filterInstanceof(Iterable<? super T> i, Class<T> type) { 29 29 return new IterableIterator<T>(new FilterIterator(i.iterator(), new InstanceofPredicate(type))); 30 30 } 31 31 32 @SuppressWarnings("unchecked")33 32 public static <T> Iterable<T> filterInstanceof(Collection<? super T> c, Class<T> type) { 34 33 return new IterableIterator<T>(new FilterIterator(c.iterator(), new InstanceofPredicate(type))); 35 34 } 36 35 37 // @SuppressWarnings("unchecked") 38 // public static <T> Iterable<T> filterNotInstanceof(Collection<T> c, Class<? extends T> type) { 39 // return new IterableIterator<T>(new FilterIterator(c.iterator(), new NotPredicate(new InstanceofPredicate(type)))); 40 // } 36 public static <T> Iterable<T> filterNotInstanceof(Collection<T> c, Class<? extends T> type) { 37 return new IterableIterator<T>(new FilterIterator(c.iterator(), new NotPredicate(new InstanceofPredicate(type)))); 38 } 41 39 } -
java/main/src/main/java/com/framsticks/util/lang/Delimeted.java
r84 r86 1 1 package com.framsticks.util.lang; 2 3 import java.util.Iterator; 2 4 3 5 import org.apache.commons.collections.Closure; … … 27 29 } 28 30 31 public final Delimeted append(Iterator<?> i) { 32 while (i.hasNext()) { 33 append(i.next()); 34 } 35 return this; 36 } 37 29 38 public final String build() { 30 39 return (builder != null ? builder.toString() : empty); -
java/main/src/main/java/com/framsticks/util/lang/IterableIterator.java
r84 r86 30 30 // } 31 31 32 32 33 @SuppressWarnings("unchecked") 33 public IterableIterator(Iterator<? extends T> i) {34 public IterableIterator(Iterator<?> i) { 34 35 this.i = (Iterator<T>) i; 35 36 } -
java/main/src/main/java/com/framsticks/util/lang/Pair.java
r84 r86 15 15 @Override 16 16 public String toString() { 17 return Strings.toStringNullProof(first) + " " + Strings.toStringNullProof(second);17 return Strings.toStringNullProof(first) + " : " + Strings.toStringNullProof(second); 18 18 } 19 19 -
java/main/src/main/java/com/framsticks/util/lang/Strings.java
r84 r86 42 42 } 43 43 } 44 45 public static String capitalize(String input) { 46 return input.substring(0, 1).toUpperCase() + input.substring(1); 47 } 48 49 public static String uncapitalize(String input) { 50 return input.substring(0, 1).toLowerCase() + input.substring(1); 51 } 44 52 } -
java/main/src/test/resources/log4j.properties
r84 r86 27 27 28 28 log4j.logger.com.framsticks=INFO 29 # log4j.logger.com.framsticks.parsers.MultiParamLoader=TRACE 29 30 # log4j.logger.com.framsticks.gui.controls.SliderControl=TRACE 30 31 # log4j.logger.com.framsticks.communication.ClientConnection=DEBUG
Note: See TracChangeset
for help on using the changeset viewer.