diff --git a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/TestMachineLearningHandlerFactory.java b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/TestMachineLearningHandlerFactory.java index e60b398d47c330d6dae39ed0d3ed5f89e4fb6e1a..d6946f471d0ed94f7b2c979f3faa7c44c77775d6 100644 --- a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/TestMachineLearningHandlerFactory.java +++ b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/TestMachineLearningHandlerFactory.java @@ -4,8 +4,10 @@ import de.tudresden.inf.st.eraser.jastadd.model.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.IOException; +import java.io.InputStream; import java.net.URL; -import java.util.Optional; +import java.util.Properties; /** * Testing preference setting @@ -15,12 +17,23 @@ import java.util.Optional; public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFactory { private static final Logger logger = LogManager.getLogger(TestMachineLearningHandlerFactory.class); + private double offset = 0; + private double multiplier = 1; @Override public void initializeFor(MachineLearningHandlerFactoryTarget target, URL configUrl) { if (target != MachineLearningHandlerFactoryTarget.PREFERENCE_LEARNING) { logger.error("Test Factory only made for preference learning, not {}", target); } + // treat given file as properties file + try (InputStream input = configUrl.openStream()) { + Properties prop = new Properties(); + prop.load(input); + offset = Double.parseDouble(prop.getProperty("offset", "0")); + multiplier = Double.parseDouble(prop.getProperty("multiplier", "1")); + } catch (IOException | IllegalArgumentException e) { + logger.catching(e); + } } @Override @@ -42,8 +55,8 @@ public class TestMachineLearningHandlerFactory extends MachineLearningHandlerFac // dirty hack to override value based on activity during runtime @Override public double getNewValue() { - Optional<Activity> activityOpt = knowledgeBase.currentActivity(); - return activityOpt.orElse(knowledgeBase.getMachineLearningRoot().getActivity(0)).getIdentifier(); + Activity activity = knowledgeBase.currentActivity().orElse(knowledgeBase.getMachineLearningRoot().getActivity(0)); + return offset + activity.getIdentifier() * multiplier; } }; update.setItem(item); diff --git a/eraser.starter/src/main/resources/testHandler.properties b/eraser.starter/src/main/resources/testHandler.properties new file mode 100644 index 0000000000000000000000000000000000000000..98a5f0e153b69773798b53d8a4b37aa9a5993ba6 --- /dev/null +++ b/eraser.starter/src/main/resources/testHandler.properties @@ -0,0 +1,2 @@ +offset=4 +multiplier=10 diff --git a/eraser.starter/starter-setting.yaml b/eraser.starter/starter-setting.yaml index 459ef78f5a24d37000b7e9bcbe8aaff76af650f5..6882f55d55fac2263502bec198d849a226eee852 100644 --- a/eraser.starter/starter-setting.yaml +++ b/eraser.starter/starter-setting.yaml @@ -25,7 +25,7 @@ load: # Model for activity recognition. If dummy is true, then the file parameter is ignored. activity: factory: de.tudresden.inf.st.eraser.feedbackloop.learner_backup.MachineLearningHandlerFactoryImpl - # File to read in. Expected format = csv /Users/boqi/eraser/datasets + # File to read in. Expected format depends on factory file: ../datasets/backup/activity_data.csv external: true # Use dummy model in which the current activity is directly editable. Default: false. @@ -38,8 +38,9 @@ activity: # Model for preference learning. If dummy is true, then the file parameter is ignored. preference: factory: de.tudresden.inf.st.eraser.starter.TestMachineLearningHandlerFactory - # File to read in. Expected format = csv - file: ../datasets/backup/preference_data.csv + # File to read in. Expected format depends on factory + file: src/main/resources/testHandler.properties +# file: ../datasets/backup/preference_data.csv external: true # Use dummy model in which the current activity is directly editable. Default: false. dummy: false