Ignore:
Timestamp:
06/28/13 11:56:03 (11 years ago)
Author:
psniegowski
Message:

HIGHLIGHTS:

  • FramsClass? and contained Param are now immutable classes (like String),

which allows to refer to them concurrently without synchronization
(which for example in turn simplifies GUI management)

  • also make Path immutable (which was earlier only assumed)
  • add global cache for FramsClasses? created solely and automatically

on base of Java classes.

representations basing on given FramsClass?

  • above changes greatly improved GUI responsivness during browsing
  • furtherly improve Param class hierarchy
  • allow to inject actions on state changes into MultiParamLoader?
  • add more tests

CHANGELOG:

Add StatusListener? to MultiParamLoader?.

Minor refactorization in MultiParamLoader?.

First step with auto append.

Add SchemaTest?.

Improve Registry.

Clean up in Registry.

Work out Registry.

Use annotations for Param.

Fix ListChange?.

Improve fluent interface of the FramsClassBuilder?.

Done caching of ReflectionAccess?.Backend

Fix hashCode of Pair.

A step on a way to cache ReflectionAccess?.Backend

Make SimpleAbstractAccess?.framsClass a final field.

Add static cache for FramsClasses? based on java.

Only classes created strictly and automatically
based on java classes are using this cache.

Make all Params immutable.

Many improvement to make Param immutable.

Make PrimitiveParam? generic type.

Several changes to make Param immutable.

Make FramsClass? immutable.

Another improvement to Path immutability.

Several improvements to Path.

Improve PathTest?.

Configurarable MutabilityDetector?.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • java/main/src/main/java/com/framsticks/parsers/GenotypeLoader.java

    r85 r87  
    1313        public GenotypeLoader() throws Exception {
    1414
    15                 FramsClass entries = new FramsClass("Genotype", "org", "A Genotype with the associated performance information. All but one Genotype objects are placed in Genotype Groups. There is also a single static Genotype object not associated with a group, which is used as a temporary storage by genetic operators and some functions from GenePools.");
    16                 entries
    17                         .appendGroup(new Group("Body"))
    18                         .appendGroup(new Group("Performance"))
    19                         .appendGroup(new Group("Fitness"))
    20                         .appendGroup(new Group("Conversions"));
     15                FramsClass entries = FramsClass.build()
     16                        .name("Genotype")
     17                        .id("org")
     18                        .description("A Genotype with the associated performance information. All but one Genotype objects are placed in Genotype Groups. There is also a single static Genotype object not associated with a group, which is used as a temporary storage by genetic operators and some functions from GenePools.")
     19                        .group("Body")
     20                        .group("Performance")
     21                        .group("Fitness")
     22                        .group("Conversions")
     23                        .param(Param.build().id("name").group(0).name("Name").type(StringParam.class).min(0).max(40))
     24                        .param(Param.build().id("genotype").group(0).name("Genotype").type(StringParam.class).min(1))
     25                        .param(Param.build().id("info").group(0).name("Info").type(StringParam.class).min(1).help("Additional information or comments"))
     26                        .param(Param.build().id("simi").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Similarity").type(FloatParam.class))
     27                        .param(Param.build().id("energ0").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Starting energy").type(FloatParam.class))
     28                        .param(Param.build().id("strsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body parts (deprecated; use numparts)").type(FloatParam.class))
     29                        .param(Param.build().id("strjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body joints (deprecated; use numjoints)").type(FloatParam.class))
     30                        .param(Param.build().id("nnsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain size (deprecated; use numneurons)").type(FloatParam.class))
     31                        .param(Param.build().id("nncon").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain connections (deprecated; use numconnections)").type(FloatParam.class))
     32                        .param(Param.build().id("numparts").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body parts").type(FloatParam.class))
     33                        .param(Param.build().id("numjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body joints").type(FloatParam.class))
     34                        .param(Param.build().id("numneurons").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain size").type(FloatParam.class))
     35                        .param(Param.build().id("numconnections").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain connections").type(FloatParam.class))
     36                        .param(Param.build().id("num").group(2).name("Ordinal number").type(DecimalParam.class))
     37                        .param(Param.build().id("gnum").group(2).name("Generation").type(DecimalParam.class))
     38                        .param(Param.build().id("popsiz").group(2).flags(Flags.USERHIDDEN).name("Deprecated; use entities").type(DecimalParam.class))
     39                        .param(Param.build().id("entities").group(2).flags(Flags.DONTSAVE).name("Instances").type(DecimalParam.class).help("Copies of this genotype"))
     40                        .param(Param.build().id("lifespan").group(2).name("Life span").type(FloatParam.class).help("Average life span"))
     41                        .param(Param.build().id("velocity").group(2).name("Velocity").type(FloatParam.class).help("Average velocity"))
     42                        .param(Param.build().id("distance").group(2).name("Distance").type(FloatParam.class))
     43                        .param(Param.build().id("vertvel").group(2).name("Vertical velocity").type(FloatParam.class))
     44                        .param(Param.build().id("vertpos").group(2).name("Vertical position").type(FloatParam.class))
     45                        .param(Param.build().id("fit").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Fitness").type(FloatParam.class))
     46                        .param(Param.build().id("fit2").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Final fitness").type(FloatParam.class).help("Fitness shifted by (avg-n*stddev)"))
     47                        .param(Param.build().id("f0genotype").group(4).flags(Flags.READONLY | Flags.DONTSAVE).name("f0 genotype").type(StringParam.class).min(1).help("converted to f0 genotype"))
     48                        .param(Param.build().id("user1").group(2).name("User field 1").type(UniversalParam.class))
     49                        .param(Param.build().id("user2").group(2).name("User field 2").type(UniversalParam.class))
     50                        .param(Param.build().id("user3").group(2).name("User field 3").type(UniversalParam.class))
     51                        .param(Param.build().id("isValid").group(0).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Valid").type(DecimalParam.class).min(0).max(1))
     52                        .param(Param.build().id("uid").group(0).flags(Flags.READONLY | Flags.USERHIDDEN).name("#").type("s").help("Unique identifier"))
     53                        .finish();
    2154
    22                 //getId, group-number, getFlags, getName, getType(getType min max), getHelp
    23                 entries
    24                         .append(Param.build().id("name").group(0).name("Name").type(StringParam.class).min(0).max(40))
    25                         .append(Param.build().id("genotype").group(0).name("Genotype").type(StringParam.class).min(1))
    26                         .append(Param.build().id("info").group(0).name("Info").type(StringParam.class).min(1).help("Additional information or comments"))
    27                         .append(Param.build().id("simi").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Similarity").type(FloatParam.class))
    28                         .append(Param.build().id("energ0").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Starting energy").type(FloatParam.class))
    29                         .append(Param.build().id("strsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body parts (deprecated; use numparts)").type(FloatParam.class))
    30                         .append(Param.build().id("strjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Body joints (deprecated; use numjoints)").type(FloatParam.class))
    31                         .append(Param.build().id("nnsiz").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain size (deprecated; use numneurons)").type(FloatParam.class))
    32                         .append(Param.build().id("nncon").group(1).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Brain connections (deprecated; use numconnections)").type(FloatParam.class))
    33                         .append(Param.build().id("numparts").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body parts").type(FloatParam.class))
    34                         .append(Param.build().id("numjoints").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Body joints").type(FloatParam.class))
    35                         .append(Param.build().id("numneurons").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain size").type(FloatParam.class))
    36                         .append(Param.build().id("numconnections").group(1).flags(Flags.READONLY | Flags.DONTSAVE).name("Brain connections").type(FloatParam.class))
    37                         .append(Param.build().id("num").group(2).name("Ordinal number").type(DecimalParam.class))
    38                         .append(Param.build().id("gnum").group(2).name("Generation").type(DecimalParam.class))
    39                         .append(Param.build().id("popsiz").group(2).flags(Flags.USERHIDDEN).name("Deprecated; use entities").type(DecimalParam.class))
    40                         .append(Param.build().id("entities").group(2).flags(Flags.DONTSAVE).name("Instances").type(DecimalParam.class).help("Copies of this genotype"))
    41                         .append(Param.build().id("lifespan").group(2).name("Life span").type(FloatParam.class).help("Average life span"))
    42                         .append(Param.build().id("velocity").group(2).name("Velocity").type(FloatParam.class).help("Average velocity"))
    43                         .append(Param.build().id("distance").group(2).name("Distance").type(FloatParam.class))
    44                         .append(Param.build().id("vertvel").group(2).name("Vertical velocity").type(FloatParam.class))
    45                         .append(Param.build().id("vertpos").group(2).name("Vertical position").type(FloatParam.class))
    46                         .append(Param.build().id("fit").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Fitness").type(FloatParam.class))
    47                         .append(Param.build().id("fit2").group(3).flags(Flags.READONLY | Flags.DONTSAVE).name("Final fitness").type(FloatParam.class).help("Fitness shifted by (avg-n*stddev)"))
    48                         .append(Param.build().id("f0genotype").group(4).flags(Flags.READONLY | Flags.DONTSAVE).name("f0 genotype").type(StringParam.class).min(1).help("converted to f0 genotype"))
    49                         .append(Param.build().id("user1").group(2).name("User field 1").type(UniversalParam.class))
    50                         .append(Param.build().id("user2").group(2).name("User field 2").type(UniversalParam.class))
    51                         .append(Param.build().id("user3").group(2).name("User field 3").type(UniversalParam.class))
    52                         .append(Param.build().id("isValid").group(0).flags(Flags.READONLY | Flags.DONTSAVE | Flags.USERHIDDEN).name("Valid").type(DecimalParam.class).min(0).max(1))
    53                         .append(Param.build().id("uid").group(0).flags(Flags.READONLY | Flags.USERHIDDEN).name("#").type("s").help("Unique identifier"));
    54 
    55                 ReflectionAccess reflectionParam = new ReflectionAccess(Genotype.class, entries);
     55                AccessInterface reflectionParam = new PropertiesAccess(entries);
    5656                addAccessInterface(reflectionParam);
    5757                addBreakCondition(Status.AfterObject);
Note: See TracChangeset for help on using the changeset viewer.