Changeset 53 for domaineditor


Ignore:
Timestamp:
12/18/24 13:28:59 (4 days ago)
Author:
ruud
Message:

All TimeDependent parties now support the nonlinear SumOfGroupsUtilitySpace. Example Nonlinear space in the computer domain

Location:
domaineditor
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • domaineditor/pom.xml

    r52 r53  
    66        <groupId>geniusweb</groupId>
    77        <artifactId>domaineditor</artifactId>
    8         <version>2.1.6</version>
     8        <version>2.2.1</version>  <!-- equals the geniusweb version -->
    99        <packaging>jar</packaging>
    1010
     
    5353                        <groupId>tudelft.utilities</groupId>
    5454                        <artifactId>utilities</artifactId>
    55                         <version>1.2.1</version>
     55                        <version>1.3.1</version>
    5656                </dependency>
    5757                <dependency>
    5858                        <groupId>tudelft.utilities</groupId>
    5959                        <artifactId>logging</artifactId>
    60                         <version>1.0.1</version>
     60                        <version>1.0.2</version>
    6161                </dependency>
    6262                <dependency>
    6363                        <groupId>tudelft.utilities</groupId>
    6464                        <artifactId>mvc</artifactId>
    65                         <version>1.1.0</version>
     65                        <version>2.0.5</version>
    6666                </dependency>
    6767
  • domaineditor/src/main/java/geniusweb/domaineditor/ProfileEditor.java

    r52 r53  
    1515import geniusweb.domaineditor.panels.profile.ProfileEditorPanel;
    1616import tudelft.utilities.logging.Reporter;
     17import tudelft.utilities.mvc.model.ModelTime;
     18import tudelft.utilities.mvc.model.NoModelTime;
    1719import tudelft.utilities.mvc.panels.PopupReporter;
    1820
     
    2426@SuppressWarnings("serial")
    2527public class ProfileEditor extends JFrame {
     28        public static ModelTime TIME = new NoModelTime();
     29
    2630        private final Reporter log;
    2731        private final LinearAdditiveUtilitySpaceModel model;
  • domaineditor/src/main/java/geniusweb/domaineditor/model/BidModel.java

    r52 r53  
    77import java.util.logging.Level;
    88
     9import geniusweb.domaineditor.ProfileEditor;
    910import geniusweb.issuevalue.Bid;
    1011import geniusweb.issuevalue.DiscreteValue;
    1112import geniusweb.issuevalue.NumberValue;
    1213import geniusweb.issuevalue.Value;
    13 import tudelft.utilities.listener.DefaultListenable;
     14import tudelft.utilities.listener.DefaultThrowingListenable;
     15import tudelft.utilities.listener.Unacceptable;
    1416import tudelft.utilities.logging.Reporter;
    1517import tudelft.utilities.mvc.model.BasicModel;
     
    1820import tudelft.utilities.mvc.model.MapFromKeys;
    1921import tudelft.utilities.mvc.model.MapModel;
     22import tudelft.utilities.mvc.model.Model;
     23import tudelft.utilities.mvc.model.ModelTime;
    2024import tudelft.utilities.mvc.model.SelectionModel;
    2125import tudelft.utilities.mvc.model.StringModel;
    22 import tudelft.utilities.mvc.model.TypedModel;
    2326import tudelft.utilities.mvc.model.events.Added;
    2427import tudelft.utilities.mvc.model.events.Changed;
     
    3841 *
    3942 */
    40 public class BidModel extends DefaultListenable<Event> implements
    41                 MapModel<StringModel, SelectionModel<BasicModel>>, TypedModel<Bid> {
     43public class BidModel extends DefaultThrowingListenable<Event>
     44                implements MapModel<StringModel, SelectionModel<BasicModel>>, Model {
    4245        private final MapModel<StringModel, ValueSetModel> issuevalues;
    4346        private final Map<StringModel, SelectionModel<BasicModel>> selections = new HashMap<>();
     
    6669
    6770        private void add(StringModel key, ListModel value) {
    68                 selections.put(key, new DefaultSelectionModel(value));
     71                selections.put(key, new DefaultSelectionModel(value, log, true));
    6972        }
    7073
    7174        /**
    7275         * Domain change occured. Handle it.
     76         *
     77         * @throws Unacceptable
    7378         */
    74         private void handleChange(Event e) {
     79        private void handleChange(Event e) throws Unacceptable {
    7580                // we only handle add/remove of issues. If a value is removed,
    7681                // this should automatically reflect into the selectionmodel.
    77                 if (!(e instanceof Changed)) {
    78                         System.out.println("Unexpected event " + e);
    79                         return;
    80                 }
     82                if (!(e instanceof Changed))
     83                        throw new Unacceptable("Unexpected event " + e);
    8184                e = e.getChildEvent();
    8285                if (e instanceof Removed) {
     
    101104        }
    102105
    103         @Override
    104106        public void remove(StringModel key) {
    105107                throw new UnsupportedOperationException();
     
    121123        }
    122124
    123         @Override
    124125        public Bid getCurrentValue() throws IllegalStateException {
    125126                Map<String, Value> selectionmap = new HashMap<>();
     
    134135        }
    135136
    136         @Override
    137137        public void setCurrentValue(Bid bid) throws IllegalArgumentException {
    138138                ListModel<StringModel> issues = issuevalues.getKeys();
     
    186186        }
    187187
     188        @Override
     189        public ModelTime getTime() {
     190                return ProfileEditor.TIME;
     191        }
     192
    188193}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/DiscreteValueSetModel.java

    r52 r53  
    77import java.util.logging.Level;
    88
     9import geniusweb.domaineditor.ProfileEditor;
    910import geniusweb.issuevalue.DiscreteValue;
    1011import geniusweb.issuevalue.DiscreteValueSet;
     
    2526
    2627        public DiscreteValueSetModel(List<StringModel> values, Reporter log) {
    27                 super(values, log);
     28                super(values, log, ProfileEditor.TIME);
    2829        }
    2930
    3031        public DiscreteValueSetModel(Reporter log) {
    31                 super(Arrays.asList(new StringModel("value", log)), log);
     32                super(Arrays.asList(new StringModel("value", log, ProfileEditor.TIME)),
     33                                log, ProfileEditor.TIME);
    3234        }
    3335
     
    7880                // first add the new vals because minimum size.
    7981                for (DiscreteValue val : valset.getValues()) {
    80                         add(new StringModel(val.getValue(), log));
     82                        add(new StringModel(val.getValue(), log, ProfileEditor.TIME));
    8183                }
    8284                for (StringModel old : oldvals) {
  • domaineditor/src/main/java/geniusweb/domaineditor/model/DomainModel.java

    r52 r53  
    1616import geniusweb.issuevalue.Domain;
    1717import geniusweb.issuevalue.ValueSet;
    18 import tudelft.utilities.listener.DefaultListenable;
     18import tudelft.utilities.listener.DefaultThrowingListenable;
    1919import tudelft.utilities.logging.Reporter;
    2020import tudelft.utilities.mvc.model.DefaultMapModel;
    2121import tudelft.utilities.mvc.model.MapModel;
    2222import tudelft.utilities.mvc.model.Model;
     23import tudelft.utilities.mvc.model.ModelTime;
    2324import tudelft.utilities.mvc.model.StringModel;
    24 import tudelft.utilities.mvc.model.TypedModel;
    2525import tudelft.utilities.mvc.model.events.Changed;
    2626import tudelft.utilities.mvc.model.events.Event;
     
    3333 *
    3434 */
    35 public class DomainModel extends DefaultListenable<Event>
    36                 implements TypedModel<Domain> {
     35public class DomainModel extends DefaultThrowingListenable<Event>
     36                implements Model { // model<Domain>
    3737        private static final ObjectMapper jackson = new ObjectMapper();
    3838        private final StringModel domainname;
     
    5757                this(new SimpleStringModel("domainname", log),
    5858                                new DefaultMapModel<StringModel, ValueSetModel>(
    59                                                 Collections.singletonMap(new StringModel("issue", log),
     59                                                Collections.singletonMap(
     60                                                                new StringModel("issue", log,
     61                                                                                ProfileEditor.TIME),
    6062                                                                new DiscreteValueSetModel(log)),
    61                                                 log) {
     63                                                log, ProfileEditor.TIME) {
    6264                                        @Override
    6365                                        public int getMinimumSize() {
     
    8890                Domain domain = jackson.readValue(file, Domain.class);
    8991                // FIXME
    90                 return new DomainModel(new StringModel(domain.getName(), log), null,
    91                                 log);
     92                return new DomainModel(
     93                                new StringModel(domain.getName(), log, ProfileEditor.TIME),
     94                                null, log);
    9295        }
    9396
     
    112115         * @return the {@link Domain} contained in this model.
    113116         */
    114         @Override
    115117        public Domain getCurrentValue() throws IllegalStateException {
    116118                Map<String, ValueSet> issues = new HashMap<>();
     
    131133         *            {@link Model}s are created where needed.
    132134         */
    133         @Override
    134135        public void setCurrentValue(Domain dom) throws IllegalArgumentException {
    135136                domainname.setValue(dom.getName());
     
    145146                                        ValueSetModelType.fromModel(dom.getValues(iss)), log);
    146147                        valsetmodel.setCurrentValue(dom.getValues(iss));
    147                         issuesmodel.put(new StringModel(iss, log), valsetmodel);
     148                        issuesmodel.put(new StringModel(iss, log, ProfileEditor.TIME),
     149                                        valsetmodel);
    148150                }
    149151                // remove the old issues
    150152                for (StringModel iss : oldissues)
    151                         issuesmodel.remove(iss);
     153                        issuesmodel.getKeys().remove(iss);
     154        }
     155
     156        @Override
     157        public ModelTime getTime() {
     158                return ProfileEditor.TIME;
    152159        }
    153160}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/NumberValueSetModel.java

    r52 r53  
    55import java.util.Map;
    66
     7import geniusweb.domaineditor.ProfileEditor;
    78import geniusweb.issuevalue.NumberValueSet;
    89import geniusweb.issuevalue.ValueSet;
    910import tudelft.utilities.immutablelist.Range;
    10 import tudelft.utilities.listener.DefaultListenable;
     11import tudelft.utilities.listener.DefaultThrowingListenable;
     12import tudelft.utilities.listener.Unacceptable;
    1113import tudelft.utilities.logging.Reporter;
    1214import tudelft.utilities.mvc.model.BasicModel;
    1315import tudelft.utilities.mvc.model.ListModel;
     16import tudelft.utilities.mvc.model.ModelTime;
    1417import tudelft.utilities.mvc.model.NumberModel;
    1518import tudelft.utilities.mvc.model.events.Changed;
     
    2023 *
    2124 */
    22 public class NumberValueSetModel extends DefaultListenable<Event>
     25public class NumberValueSetModel extends DefaultThrowingListenable<Event>
    2326                implements ValueSetModel {
    2427
     
    2730
    2831        public NumberValueSetModel(NumberModel lowv, NumberModel highv,
    29                         NumberModel stepv, Reporter log) {
     32                        NumberModel stepv, Reporter log) throws Unacceptable {
    3033                this.low = lowv;
    3134                this.high = highv;
     
    4144        }
    4245
    43         private void check() throws IllegalStateException {
     46        private void check() throws Unacceptable {
    4447                if (low.getValue().compareTo(high.getValue()) > 0)
    45                         throw new IllegalStateException("low must be <= high");
     48                        throw new Unacceptable("low must be <= high");
    4649                if (step.getValue().compareTo(BigDecimal.ZERO) <= 0)
    47                         throw new IllegalStateException("step must be >0");
     50                        throw new Unacceptable("step must be >0");
    4851                notifyListeners(new Changed(this, null));
    4952        }
     
    5154        /*
    5255         * Default, bit arbitrary values.
     56         *
     57         * @throws something that should never happen
    5358         */
    54         public NumberValueSetModel(Reporter log) {
    55                 this(new NumberModel(BigDecimal.ZERO, log),
    56                                 new NumberModel(BigDecimal.TEN, log),
    57                                 new NumberModel(BigDecimal.ONE, log), log);
     59        public NumberValueSetModel(Reporter log) throws Unacceptable {
     60                this(new NumberModel(BigDecimal.ZERO, log, ProfileEditor.TIME),
     61                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     62                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    5863        }
    5964
     
    116121        }
    117122
     123        @Override
     124        public ModelTime getTime() {
     125                return ProfileEditor.TIME;
     126        }
     127
    118128}
    119129
     
    122132 *
    123133 */
    124 class MyListModel extends DefaultListenable<Event>
     134class MyListModel extends DefaultThrowingListenable<Event>
    125135                implements ListModel<NumberModel> {
    126136
     
    143153                BigDecimal val = numvalset.getCurrentValue().getRange().get(n);
    144154                if (!itemsCache.containsKey(val))
    145                         itemsCache.put(val, new NumberModel(val, numvalset.log));
     155                        itemsCache.put(val,
     156                                        new NumberModel(val, numvalset.log, ProfileEditor.TIME));
    146157                return itemsCache.get(val);
    147158        }
     
    168179        }
    169180
     181        @Override
     182        public ModelTime getTime() {
     183                return ProfileEditor.TIME;
     184        }
     185
    170186}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/SimpleStringModel.java

    r52 r53  
    11package geniusweb.domaineditor.model;
    22
     3import geniusweb.domaineditor.ProfileEditor;
     4import tudelft.utilities.listener.Unacceptable;
    35import tudelft.utilities.logging.Reporter;
    46import tudelft.utilities.mvc.model.StringModel;
     
    1012
    1113        public SimpleStringModel(String val, Reporter log) {
    12                 super(val, log);
     14                super(val, log, ProfileEditor.TIME);
    1315        }
    1416
    1517        @Override
    16         protected void check() throws IllegalStateException {
     18        protected void check() throws Unacceptable {
    1719                if (!(getValue().matches("[a-zA-Z0-9]+")))
    18                         throw new IllegalStateException(
     20                        throw new Unacceptable(
    1921                                        "Only lower and upper case letters and numbers are allowed");
    2022                super.check();
  • domaineditor/src/main/java/geniusweb/domaineditor/model/ValueSetModel.java

    r52 r53  
    44import tudelft.utilities.mvc.model.BasicModel;
    55import tudelft.utilities.mvc.model.ListModel;
    6 import tudelft.utilities.mvc.model.TypedModel;
     6import tudelft.utilities.mvc.model.Model;
    77
    88/**
     
    1111 *
    1212 */
    13 public interface ValueSetModel extends TypedModel<ValueSet> {
     13public interface ValueSetModel extends Model {
    1414        /**
    1515         *
     
    2525        public ListModel<? extends BasicModel> getList();
    2626
     27        /**
     28         *
     29         * @return the currently contained value in the model. We do NOT specify the
     30         *         type of the returned object because it would have to be a type
     31         *         parameter added to Model, which leads to all kinds of issues with
     32         *         excessive parameterization and issues when a class extends eg a
     33         *         MapModel. NOTE: also derived classes like ListModel should not
     34         *         specify that they return {@link List} or so: further subclassing
     35         *         of eg a ListModel might be eg a ValueSet which would not return a
     36         *         List again.
     37         * @throws IllegalStateException if the model is not correctly filled in at
     38         *                               this moment.
     39         */
     40        public ValueSet getCurrentValue() throws IllegalStateException;
     41
     42        /**
     43         * Sets the current value based on the proviced obj
     44         *
     45         * @param obj the object to load the model with. Mirror of
     46         *            {@link #getCurrentValue()} and the Object is the same type.
     47         * @throws IllegalArgumentException if the object is not the expected object
     48         *                                  type
     49         */
     50        public void setCurrentValue(ValueSet obj) throws IllegalArgumentException;
     51
    2752}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/ValueSetModelType.java

    r52 r53  
    44import geniusweb.issuevalue.NumberValueSet;
    55import geniusweb.issuevalue.ValueSet;
     6import tudelft.utilities.listener.Unacceptable;
    67import tudelft.utilities.logging.Reporter;
    78
     
    5758                        return new DiscreteValueSetModel(log);
    5859                case NUMBER:
    59                         return new NumberValueSetModel(log);
     60                        try {
     61                                return new NumberValueSetModel(log);
     62                        } catch (Unacceptable e) {
     63                                throw new RuntimeException(e);// shouldn't happen
     64                        }
    6065                }
    6166                return null; // unreachable code
  • domaineditor/src/main/java/geniusweb/domaineditor/model/profile/DiscreteValueSetUtilitiesModel.java

    r52 r53  
    55import java.util.Map;
    66
     7import geniusweb.domaineditor.ProfileEditor;
    78import geniusweb.domaineditor.model.DiscreteValueSetModel;
    89import geniusweb.issuevalue.DiscreteValue;
    910import geniusweb.profile.utilityspace.DiscreteValueSetUtilities;
    1011import geniusweb.profile.utilityspace.ValueSetUtilities;
    11 import tudelft.utilities.listener.DefaultListenable;
     12import tudelft.utilities.listener.DefaultThrowingListenable;
     13import tudelft.utilities.listener.Unacceptable;
    1214import tudelft.utilities.logging.Reporter;
    1315import tudelft.utilities.mvc.model.ListModel;
    1416import tudelft.utilities.mvc.model.MapModel;
     17import tudelft.utilities.mvc.model.ModelTime;
    1518import tudelft.utilities.mvc.model.NumberModel;
    1619import tudelft.utilities.mvc.model.RestrictedNumberModel;
     
    2629 *
    2730 */
    28 public class DiscreteValueSetUtilitiesModel extends DefaultListenable<Event>
    29                 implements MapModel<StringModel, RestrictedNumberModel>,
    30                 ValueSetUtilitiesModel {
     31public class DiscreteValueSetUtilitiesModel
     32                extends DefaultThrowingListenable<Event> implements
     33                MapModel<StringModel, RestrictedNumberModel>, ValueSetUtilitiesModel {
     34
    3135        private final ListModel<StringModel> values;
    3236        private final Map<StringModel, RestrictedNumberModel> utilities = new HashMap<>();
     
    3741        private final static Reporter dummylog = new PopupReporter(null);
    3842        private final static NumberModel LOW = new NumberModel(BigDecimal.ZERO,
    39                         dummylog);
     43                        dummylog, ProfileEditor.TIME);
    4044        private final static NumberModel HIGH = new NumberModel(BigDecimal.ONE,
    41                         dummylog);
     45                        dummylog, ProfileEditor.TIME);
    4246
    4347        public DiscreteValueSetUtilitiesModel(DiscreteValueSetModel values,
     
    5054        public RestrictedNumberModel getValue(StringModel key) {
    5155                if (!utilities.containsKey(key)) {
    52                         utilities.put(key,
    53                                         new RestrictedNumberModel(DEFAULT, LOW, HIGH, log));
     56                        try {
     57                                utilities.put(key, new RestrictedNumberModel(DEFAULT, LOW, HIGH,
     58                                                log, ProfileEditor.TIME));
     59                        } catch (Unacceptable e) {
     60                                throw new RuntimeException(e);// this should not happen
     61                        }
    5462                }
    5563                return utilities.get(key);
     
    6169        }
    6270
    63         @Override
    6471        public void remove(StringModel key) {
    6572                throw new UnsupportedOperationException();
     
    113120        }
    114121
     122        @Override
     123        public ModelTime getTime() {
     124                return ProfileEditor.TIME;
     125        }
     126
    115127}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/profile/LinearAdditiveUtilitySpaceModel.java

    r52 r53  
    88import java.util.stream.Collectors;
    99
     10import geniusweb.domaineditor.ProfileEditor;
    1011import geniusweb.domaineditor.model.BidModel;
    1112import geniusweb.domaineditor.model.DiscreteValueSetModel;
     
    1617import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
    1718import geniusweb.profile.utilityspace.ValueSetUtilities;
    18 import tudelft.utilities.listener.DefaultListenable;
     19import tudelft.utilities.listener.DefaultThrowingListenable;
     20import tudelft.utilities.listener.Unacceptable;
    1921import tudelft.utilities.logging.Reporter;
    2022import tudelft.utilities.mvc.model.ListModel;
    2123import tudelft.utilities.mvc.model.MapFromKeys;
    2224import tudelft.utilities.mvc.model.MapModel;
     25import tudelft.utilities.mvc.model.Model;
     26import tudelft.utilities.mvc.model.ModelTime;
    2327import tudelft.utilities.mvc.model.NumberModel;
    2428import tudelft.utilities.mvc.model.RestrictedNumberModel;
    2529import tudelft.utilities.mvc.model.StringModel;
    26 import tudelft.utilities.mvc.model.TypedModel;
    2730import tudelft.utilities.mvc.model.events.Event;
    2831import tudelft.utilities.mvc.panels.PopupReporter;
     
    3134 * Model containing a {@link LinearAdditiveUtilitySpace}
    3235 */
    33 public class LinearAdditiveUtilitySpaceModel extends DefaultListenable<Event>
    34                 implements ProfileModel, TypedModel<LinearAdditiveUtilitySpace> {
     36public class LinearAdditiveUtilitySpaceModel extends
     37                DefaultThrowingListenable<Event> implements ProfileModel, Model { // Model<<LinearAdditiveUtilitySpace>>
    3538        private final SimpleStringModel name;
    3639        /**
     
    8790        // we should never allow editing of these constants.
    8891        protected static final NumberModel CONSTANT0 = new NumberModel(
    89                         BigDecimal.ZERO, dummylog);
     92                        BigDecimal.ZERO, dummylog, ProfileEditor.TIME);
    9093        protected static final NumberModel CONSTANT1 = new NumberModel(
    91                         BigDecimal.ONE, dummylog);
     94                        BigDecimal.ONE, dummylog, ProfileEditor.TIME);
    9295
    9396        public LinearAdditiveUtilitySpaceModel(DomainModel domain,
     
    108111                        final DomainModel domain2, final Reporter log) {
    109112                return new MapFromKeys<StringModel, RestrictedNumberModel>(
    110                                 domain2.getIssues().getKeys(), log, true) {
     113                                domain2.getIssues().getKeys(), log, true, ProfileEditor.TIME) {
    111114
    112115                        @Override
    113116                        public RestrictedNumberModel create(StringModel key) {
    114                                 return new RestrictedNumberModel(N05, CONSTANT0, CONSTANT1,
    115                                                 log);
     117                                try {
     118                                        return new RestrictedNumberModel(N05, CONSTANT0, CONSTANT1,
     119                                                        log, ProfileEditor.TIME);
     120                                } catch (Unacceptable e) {
     121                                        throw new RuntimeException(e); // shouldn't happen
     122                                }
    116123                        }
    117124
     
    129136                // different type
    130137                return new MapFromKeys<StringModel, ValueSetUtilitiesModel>(
    131                                 domain2.getIssues().getKeys(), log, false) {
     138                                domain2.getIssues().getKeys(), log, false, ProfileEditor.TIME) {
    132139                        @Override
    133140                        public ValueSetUtilitiesModel create(StringModel key) {
     
    137144                                                        (DiscreteValueSetModel) val, log);
    138145                                if (val instanceof NumberValueSetModel)
    139                                         return new NumberValueSetUtilitiesModel(
    140                                                         (NumberValueSetModel) val, log);
     146                                        try {
     147                                                return new NumberValueSetUtilitiesModel(
     148                                                                (NumberValueSetModel) val, log);
     149                                        } catch (Unacceptable e) {
     150                                                throw new RuntimeException(e); // shouldn't happen
     151                                        }
    141152                                throw new RuntimeException(
    142153                                                "Unsupported type " + val + "for key" + key);
     
    190201        }
    191202
    192         @Override
    193203        public LinearAdditiveUtilitySpace getCurrentValue()
    194204                        throws IllegalStateException {
     
    212222        }
    213223
    214         @Override
    215224        public void setCurrentValue(LinearAdditiveUtilitySpace obj)
    216225                        throws IllegalArgumentException {
     
    258267        }
    259268
     269        @Override
     270        public ModelTime getTime() {
     271                return ProfileEditor.TIME;
     272        }
     273
    260274}
  • domaineditor/src/main/java/geniusweb/domaineditor/model/profile/NumberValueSetUtilitiesModel.java

    r52 r53  
    33import java.math.BigDecimal;
    44
     5import geniusweb.domaineditor.ProfileEditor;
    56import geniusweb.domaineditor.model.NumberValueSetModel;
    67import geniusweb.profile.utilityspace.NumberValueSetUtilities;
    78import geniusweb.profile.utilityspace.ValueSetUtilities;
    8 import tudelft.utilities.listener.DefaultListenable;
     9import tudelft.utilities.listener.DefaultThrowingListenable;
     10import tudelft.utilities.listener.Unacceptable;
    911import tudelft.utilities.logging.Reporter;
     12import tudelft.utilities.mvc.model.ModelTime;
    1013import tudelft.utilities.mvc.model.NumberModel;
    1114import tudelft.utilities.mvc.model.RestrictedNumberModel;
     
    1720 *
    1821 */
    19 public class NumberValueSetUtilitiesModel extends DefaultListenable<Event>
    20                 implements ValueSetUtilitiesModel {
     22public class NumberValueSetUtilitiesModel extends
     23                DefaultThrowingListenable<Event> implements ValueSetUtilitiesModel {
    2124
    2225        private static final BigDecimal DEFAULT = new BigDecimal("0.5");
     
    2528        private final static Reporter dummylog = new PopupReporter(null);
    2629        private final static NumberModel LOW = new NumberModel(BigDecimal.ZERO,
    27                         dummylog);
     30                        dummylog, ProfileEditor.TIME);
    2831        private final static NumberModel HIGH = new NumberModel(BigDecimal.ONE,
    29                         dummylog);
     32                        dummylog, ProfileEditor.TIME);
    3033        private final NumberModel lowValue;
    3134        private final RestrictedNumberModel lowUtility;
     
    4952        }
    5053
    51         NumberValueSetUtilitiesModel(NumberValueSetModel valuesmodel,
    52                         Reporter log) {
     54        NumberValueSetUtilitiesModel(NumberValueSetModel valuesmodel, Reporter log)
     55                        throws Unacceptable {
    5356                this(valuesmodel.getLow(),
    54                                 new RestrictedNumberModel(DEFAULT, LOW, HIGH, log),
    55                                 valuesmodel.getHigh(),
    56                                 new RestrictedNumberModel(DEFAULT, LOW, HIGH, log));
     57                                new RestrictedNumberModel(DEFAULT, LOW, HIGH, log,
     58                                                ProfileEditor.TIME),
     59                                valuesmodel.getHigh(), new RestrictedNumberModel(DEFAULT, LOW,
     60                                                HIGH, log, ProfileEditor.TIME));
    5761        }
    5862
     
    9599                highUtility.setValue(utils.getHighUtility());
    96100        }
     101
     102        @Override
     103        public ModelTime getTime() {
     104                return ProfileEditor.TIME;
     105        }
    97106};
  • domaineditor/src/main/java/geniusweb/domaineditor/model/profile/ValueSetUtilitiesModel.java

    r52 r53  
    22
    33import geniusweb.profile.utilityspace.ValueSetUtilities;
    4 import tudelft.utilities.mvc.model.TypedModel;
     4import tudelft.utilities.mvc.model.Model;
    55
    66/**
     
    88 *
    99 */
    10 public interface ValueSetUtilitiesModel extends TypedModel<ValueSetUtilities> {
     10public interface ValueSetUtilitiesModel extends Model {
     11
     12        void setCurrentValue(ValueSetUtilities valueSetUtilities);
     13
     14        ValueSetUtilities getCurrentValue();
    1115
    1216}
  • domaineditor/src/main/java/geniusweb/domaineditor/panels/DiscreteValueSetPanel.java

    r52 r53  
    55import javax.swing.JPanel;
    66
     7import geniusweb.domaineditor.ProfileEditor;
    78import geniusweb.domaineditor.model.DiscreteValueSetModel;
    89import tudelft.utilities.logging.Reporter;
     
    2425                setLayout(new BorderLayout());
    2526                add(new EditableListViewPanel(model.getList()) {
     27
    2628                        @Override
    2729                        protected void addItem() {
    28                                 model.add(new StringModel("value " + (n++), log));
     30                                model.add(new StringModel("value " + (n++), log,
     31                                                ProfileEditor.TIME));
    2932
    3033                        }
  • domaineditor/src/main/java/geniusweb/domaineditor/panels/DomainEditorPanel.java

    r52 r53  
    99import javax.swing.JPanel;
    1010
     11import geniusweb.domaineditor.ProfileEditor;
    1112import geniusweb.domaineditor.model.DiscreteValueSetModel;
    1213import geniusweb.domaineditor.model.DomainModel;
    1314import geniusweb.domaineditor.model.NumberValueSetModel;
    1415import geniusweb.domaineditor.model.ValueSetModel;
     16import tudelft.utilities.listener.Unacceptable;
    1517import tudelft.utilities.logging.Reporter;
    1618import tudelft.utilities.mvc.model.MapModel;
     
    3941
    4042                add(new LabeledPanel("domain name ",
    41                                 new StringPanel(domainmodel.getName())),
    42                                 BorderLayout.NORTH);
     43                                new StringPanel(domainmodel.getName())), BorderLayout.NORTH);
    4344                add(new IssuesMapEditor(domainmodel.getIssues(), log),
    4445                                BorderLayout.CENTER);
     
    8283                panel.add(combo, BorderLayout.CENTER);
    8384                JOptionPane.showMessageDialog(this, panel);
    84                 StringModel issuename = new StringModel("issue " + (n++), logger);
     85                StringModel issuename = new StringModel("issue " + (n++), logger,
     86                                ProfileEditor.TIME);
    8587                ValueSetModel valuesetmodel;
    8688                if (combo.getSelectedItem().equals("discrete"))
    8789                        valuesetmodel = new DiscreteValueSetModel(logger);
    8890                else
    89                         valuesetmodel = new NumberValueSetModel(logger);
     91                        try {
     92                                valuesetmodel = new NumberValueSetModel(logger);
     93                        } catch (Unacceptable e) {
     94                                throw new RuntimeException(e);// shouldn't happen
     95                        }
    9096                getModel().put(issuename, valuesetmodel);
    9197
  • domaineditor/src/test/java/geniusweb/domaineditor/DomainEditorPanelTest.java

    r52 r53  
    1212import geniusweb.domaineditor.model.ValueSetModel;
    1313import geniusweb.domaineditor.panels.DomainEditorPanel;
    14 import tudelft.utilities.listener.Listener;
     14import tudelft.utilities.listener.ThrowingListener;
    1515import tudelft.utilities.logging.Reporter;
    1616import tudelft.utilities.mvc.model.DefaultMapModel;
     
    2828                f.setLayout(new BorderLayout());
    2929
    30                 StringModel namemodel = new StringModel("issue1", log);
     30                StringModel namemodel = new StringModel("issue1", log,
     31                                ProfileEditor.TIME);
    3132                ValueSetModel valuesmmodel = new DiscreteValueSetModel(log);
    3233                DefaultMapModel<StringModel, ValueSetModel> issuesmodel = new DefaultMapModel<StringModel, ValueSetModel>(
    33                                 Collections.singletonMap(namemodel, valuesmmodel), log) {
     34                                Collections.singletonMap(namemodel, valuesmmodel), log,
     35                                ProfileEditor.TIME) {
    3436
    3537                        @Override
     
    5052
    5153                };
    52                 DomainModel model = new DomainModel(new StringModel("testdomain", log),
     54                DomainModel model = new DomainModel(
     55                                new StringModel("testdomain", log, ProfileEditor.TIME),
    5356                                issuesmodel, log);
    54                 model.addListener(new Listener<Event>() {
     57                model.addListener(new ThrowingListener<Event>() {
    5558
    5659                        @Override
  • domaineditor/src/test/java/geniusweb/model/NumberValueSetModelTest.java

    r52 r53  
    1111import org.junit.Test;
    1212
     13import geniusweb.domaineditor.ProfileEditor;
    1314import geniusweb.domaineditor.model.NumberValueSetModel;
    1415import geniusweb.issuevalue.NumberValueSet;
    1516import geniusweb.issuevalue.ValueSet;
    1617import tudelft.utilities.immutablelist.Range;
     18import tudelft.utilities.listener.Unacceptable;
    1719import tudelft.utilities.logging.Reporter;
    1820import tudelft.utilities.mvc.model.NumberModel;
     
    2224
    2325        @Test
    24         public void smoke() {
     26        public void smoke() throws Unacceptable {
    2527                new NumberValueSetModel(log);
    2628        }
    2729
    2830        @Test
    29         public void testSomeGoodValues() {
     31        public void testSomeGoodValues() throws Unacceptable {
    3032                NumberValueSetModel model = new NumberValueSetModel(log);
    3133                assertEquals(11, model.getList().getSize()); // default is 0...10
     
    3335                assertEquals(9, model.getList().getSize()); // 2..10
    3436                model.getHigh().setValue(new BigDecimal("3"));
     37                assertEquals(2, model.getLow().getValue().intValue());
     38                assertEquals(3, model.getHigh().getValue().intValue());
    3539                assertEquals(2, model.getList().getSize()); // 2..3
    3640                model.getStep().setValue(new BigDecimal("0.1"));
     
    3842        }
    3943
    40         @Test(expected = IllegalStateException.class)
    41         public void testIllegal1() {
    42                 new NumberValueSetModel(new NumberModel(BigDecimal.TEN, log),
    43                                 new NumberModel(BigDecimal.ONE, log),
    44                                 new NumberModel(BigDecimal.ONE, log), log);
     44        @Test(expected = Unacceptable.class)
     45        public void testIllegal1() throws Unacceptable {
     46                new NumberValueSetModel(
     47                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     48                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME),
     49                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    4550        }
    4651
    4752        @Test
    48         public void testIllegal12() {
     53        public void testIllegal12() throws Unacceptable {
    4954                NumberValueSetModel n = new NumberValueSetModel(log);
    5055                // change low above high must log problem
     
    5358        }
    5459
    55         @Test(expected = IllegalStateException.class)
    56         public void testIllegal3() {
     60        @Test(expected = Unacceptable.class)
     61        public void testIllegal3() throws Unacceptable {
    5762                NumberValueSetModel model = new NumberValueSetModel(
    58                                 new NumberModel(BigDecimal.TEN, log),
    59                                 new NumberModel(BigDecimal.ONE, log),
    60                                 new NumberModel(BigDecimal.ONE, log), log);
     63                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     64                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME),
     65                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    6166                model.getLow().setValue(BigDecimal.valueOf(20));
    6267        }
    6368
    6469        @Test
    65         public void testLowIncrease() {
     70        public void testLowIncrease() throws Unacceptable {
    6671                NumberValueSetModel set = new NumberValueSetModel(
    67                                 new NumberModel(BigDecimal.ZERO, log),
    68                                 new NumberModel(BigDecimal.TEN, log),
    69                                 new NumberModel(BigDecimal.ONE, log), log);
     72                                new NumberModel(BigDecimal.ZERO, log, ProfileEditor.TIME),
     73                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     74                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    7075                ValueSet v = new NumberValueSet(
    7176                                new Range(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.ONE));
     
    7580
    7681        @Test
    77         public void testHighDecrease() {
     82        public void testHighDecrease() throws Unacceptable {
    7883                NumberValueSetModel set = new NumberValueSetModel(
    79                                 new NumberModel(BigDecimal.ZERO, log),
    80                                 new NumberModel(BigDecimal.TEN, log),
    81                                 new NumberModel(BigDecimal.ONE, log), log);
     84                                new NumberModel(BigDecimal.ZERO, log, ProfileEditor.TIME),
     85                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     86                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    8287                ValueSet v = new NumberValueSet(
    8388                                new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE));
     
    8792
    8893        @Test
    89         public void testIncreaseBoth() {
     94        public void testIncreaseBoth() throws Unacceptable {
    9095                NumberValueSetModel set = new NumberValueSetModel(
    91                                 new NumberModel(BigDecimal.ZERO, log),
    92                                 new NumberModel(BigDecimal.ONE, log),
    93                                 new NumberModel(BigDecimal.ONE, log), log);
     96                                new NumberModel(BigDecimal.ZERO, log, ProfileEditor.TIME),
     97                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME),
     98                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    9499                ValueSet v = new NumberValueSet(
    95100                                new Range(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.ONE));
     
    98103
    99104        @Test
    100         public void testIncreaseBothMuch() {
     105        public void testIncreaseBothMuch() throws Unacceptable {
    101106                NumberValueSetModel set = new NumberValueSetModel(
    102                                 new NumberModel(BigDecimal.ZERO, log),
    103                                 new NumberModel(BigDecimal.ONE, log),
    104                                 new NumberModel(BigDecimal.ONE, log), log);
     107                                new NumberModel(BigDecimal.ZERO, log, ProfileEditor.TIME),
     108                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME),
     109                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    105110                ValueSet v = new NumberValueSet(new Range(new BigDecimal("20"),
    106111                                new BigDecimal("80"), BigDecimal.ONE));
     
    109114
    110115        @Test
    111         public void testDecreaseBoth() {
     116        public void testDecreaseBoth() throws Unacceptable {
    112117                NumberValueSetModel set = new NumberValueSetModel(
    113                                 new NumberModel(BigDecimal.ONE, log),
    114                                 new NumberModel(BigDecimal.TEN, log),
    115                                 new NumberModel(BigDecimal.ONE, log), log);
     118                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME),
     119                                new NumberModel(BigDecimal.TEN, log, ProfileEditor.TIME),
     120                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    116121                ValueSet v = new NumberValueSet(
    117122                                new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE));
     
    120125
    121126        @Test
    122         public void testDecreaseBothMuch() {
     127        public void testDecreaseBothMuch() throws Unacceptable {
    123128                NumberValueSetModel set = new NumberValueSetModel(
    124                                 new NumberModel(new BigDecimal("20"), log),
    125                                 new NumberModel(new BigDecimal("80"), log),
    126                                 new NumberModel(BigDecimal.ONE, log), log);
     129                                new NumberModel(new BigDecimal("20"), log, ProfileEditor.TIME),
     130                                new NumberModel(new BigDecimal("80"), log, ProfileEditor.TIME),
     131                                new NumberModel(BigDecimal.ONE, log, ProfileEditor.TIME), log);
    127132                ValueSet v = new NumberValueSet(
    128133                                new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE));
  • domaineditor/src/test/java/geniusweb/panels/ComboBoxTest.java

    r52 r53  
    1414import org.junit.Test;
    1515
     16import geniusweb.domaineditor.ProfileEditor;
    1617import geniusweb.domaineditor.model.DiscreteValueSetModel;
    1718import geniusweb.domaineditor.model.DomainModel;
     
    3233        public void GuiTest() throws InterruptedException {
    3334
    34                 StringModel a = new StringModel("apples", log);
    35                 StringModel b = new StringModel("bears", log);
    36                 StringModel c = new StringModel("carrots", log);
     35                StringModel a = new StringModel("apples", log, ProfileEditor.TIME);
     36                StringModel b = new StringModel("bears", log, ProfileEditor.TIME);
     37                StringModel c = new StringModel("carrots", log, ProfileEditor.TIME);
    3738
    3839                JFrame f = new JFrame();
     
    4041                f.getContentPane().add(panel);
    4142                DefaultListModel<StringModel> model = new DefaultListModel(
    42                                 Arrays.asList(a, b, c), log) {
    43 
    44                 };
     43                                Arrays.asList(a, b, c), log, ProfileEditor.TIME);
    4544                DefaultSelectionModel<StringModel> selectionmodel1 = new DefaultSelectionModel(
    46                                 model);
     45                                model, log, true);
    4746                panel.add(new ComboBox<StringModel>(selectionmodel1),
    4847                                BorderLayout.NORTH);
     
    6059        public void testEqualsDeep() {
    6160
    62                 StringModel redvalue = new StringModel("red", log);
    63                 StringModel greenvalue = new StringModel("green", log);
     61                StringModel redvalue = new StringModel("red", log, ProfileEditor.TIME);
     62                StringModel greenvalue = new StringModel("green", log,
     63                                ProfileEditor.TIME);
    6464                DiscreteValueSetModel issue1values = new DiscreteValueSetModel(
    6565                                Arrays.asList(redvalue, greenvalue), log);
    6666
    67                 StringModel issue1 = new StringModel("issue", log);
     67                StringModel issue1 = new StringModel("issue", log, ProfileEditor.TIME);
    6868
    69                 SelectionModel issue1valuessel = new DefaultSelectionModel(
    70                                 issue1values);
     69                SelectionModel issue1valuessel = new DefaultSelectionModel(issue1values,
     70                                log, true);
    7171                Map<StringModel, SelectionModel> a = Collections.singletonMap(issue1,
    7272                                issue1valuessel);
    7373                DefaultMapModel<StringModel, SelectionModel> issuevalues = new DefaultMapModel<StringModel, SelectionModel>(
    74                                 a, log) {
     74                                a, log, ProfileEditor.TIME) {
    7575
    7676                        @Override
     
    9292
    9393                MapModel<StringModel, ValueSetModel> issuevaluesmodel = new DefaultMapModel<StringModel, ValueSetModel>(
    94                                 Collections.singletonMap(issue1, issue1values), log) {
     94                                Collections.singletonMap(issue1, issue1values), log,
     95                                ProfileEditor.TIME) {
    9596
    9697                        @Override
     
    110111
    111112                };
    112                 DomainModel domain = new DomainModel(new StringModel("testdomain", log),
     113                DomainModel domain = new DomainModel(
     114                                new StringModel("testdomain", log, ProfileEditor.TIME),
    113115                                issuevaluesmodel, log);
    114116
Note: See TracChangeset for help on using the changeset viewer.