Changeset 1189 for trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java
- Timestamp:
- 04/29/13 16:29:53 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java
r1188 r1189 15 15 package de.ugoe.cs.autoquest.tasktrees.temporalrelation; 16 16 17 import java.io.IOException; 18 import java.io.ObjectInputStream; 17 19 import java.util.HashMap; 18 20 import java.util.Iterator; … … 74 76 * </p> 75 77 */ 76 SequenceForTaskDetectionRule(TaskEqualityRuleManager taskEqualityRuleManager, 77 TaskEquality minimalTaskEquality, 78 ITaskFactory taskFactory, 79 ITaskBuilder taskBuilder) 78 SequenceForTaskDetectionRule(TaskEquality minimalTaskEquality, 79 ITaskFactory taskFactory, 80 ITaskBuilder taskBuilder) 80 81 { 81 82 this.taskFactory = taskFactory; 82 83 this.taskBuilder = taskBuilder; 83 84 84 this.taskComparator = new TaskComparator( taskEqualityRuleManager,minimalTaskEquality);85 this.taskComparator = new TaskComparator(minimalTaskEquality); 85 86 } 86 87 … … 887 888 */ 888 889 private static class TaskComparator implements SymbolComparator<ITaskInstance> { 889 890 890 891 /** */ 891 private Comparer comparer;892 private TaskEquality minimalNodeEquality; 892 893 893 894 /** */ 894 private Comparer lexicalComparer;895 private transient Comparer comparer; 895 896 896 897 /** */ 897 private HashMap<Long, Boolean> equalityBuffer = new HashMap<Long, Boolean>();898 private transient Comparer lexicalComparer; 898 899 899 900 /** */ 900 private HashMap<Long, Boolean> lexicalEqualityBuffer; 901 private transient HashMap<Long, Boolean> equalityBuffer = new HashMap<Long, Boolean>(); 902 903 /** */ 904 private transient HashMap<Long, Boolean> lexicalEqualityBuffer; 901 905 902 906 /** 903 907 * 904 908 */ 905 public TaskComparator(TaskEqualityRuleManager taskEqualityRuleManager, 906 TaskEquality minimalNodeEquality) 907 { 908 super(); 909 910 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 911 comparer = new LexicalComparer(taskEqualityRuleManager); 912 } 913 else if (minimalNodeEquality == TaskEquality.SYNTACTICALLY_EQUAL) { 914 comparer = new SyntacticalComparer(taskEqualityRuleManager); 915 } 916 else if (minimalNodeEquality == TaskEquality.SEMANTICALLY_EQUAL) { 917 comparer = new SemanticalComparer(taskEqualityRuleManager); 918 } 919 else { 920 comparer = new DefaultComparer(taskEqualityRuleManager, minimalNodeEquality); 921 } 922 923 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 924 lexicalComparer = comparer; 925 lexicalEqualityBuffer = equalityBuffer; 926 } 927 else { 928 lexicalComparer = new LexicalComparer(taskEqualityRuleManager); 929 lexicalEqualityBuffer = new HashMap<Long, Boolean>(); 930 } 909 public TaskComparator(TaskEquality minimalNodeEquality) { 910 this.minimalNodeEquality = minimalNodeEquality; 911 init(); 931 912 } 932 913 … … 991 972 return result; 992 973 } 974 975 /** 976 * 977 */ 978 private void init() { 979 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 980 comparer = new LexicalComparer(); 981 } 982 else if (minimalNodeEquality == TaskEquality.SYNTACTICALLY_EQUAL) { 983 comparer = new SyntacticalComparer(); 984 } 985 else if (minimalNodeEquality == TaskEquality.SEMANTICALLY_EQUAL) { 986 comparer = new SemanticalComparer(); 987 } 988 else { 989 comparer = new DefaultComparer(this.minimalNodeEquality); 990 } 991 992 if (minimalNodeEquality == TaskEquality.LEXICALLY_EQUAL) { 993 lexicalComparer = comparer; 994 lexicalEqualityBuffer = equalityBuffer; 995 } 996 else { 997 lexicalComparer = new LexicalComparer(); 998 lexicalEqualityBuffer = new HashMap<Long, Boolean>(); 999 } 1000 } 1001 1002 /** 1003 * <p> 1004 * deserialize this object and reinitialize the buffers 1005 * </p> 1006 */ 1007 private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 1008 in.defaultReadObject(); 1009 init(); 1010 } 993 1011 } 994 1012 … … 1010 1028 1011 1029 /** 1012 * <p>1013 * the task equality manager needed for comparing tasks with each other1014 * </p>1015 */1016 private TaskEqualityRuleManager taskEqualityRuleManager;1017 1018 /**1019 *1020 */1021 public LexicalComparer(TaskEqualityRuleManager taskEqualityRuleManager) {1022 this.taskEqualityRuleManager = taskEqualityRuleManager;1023 }1024 1025 /**1026 1030 * 1027 1031 */ 1028 1032 public boolean compare(ITask task1, ITask task2) { 1029 return taskEqualityRuleManager.areLexicallyEqual(task1, task2);1033 return TaskEqualityRuleManager.getInstance().areLexicallyEqual(task1, task2); 1030 1034 } 1031 1035 } … … 1037 1041 1038 1042 /** 1039 * <p>1040 * the task equality manager needed for comparing tasks with each other1041 * </p>1042 */1043 private TaskEqualityRuleManager taskEqualityRuleManager;1044 1045 /**1046 *1047 */1048 public SyntacticalComparer(TaskEqualityRuleManager taskEqualityRuleManager) {1049 this.taskEqualityRuleManager = taskEqualityRuleManager;1050 }1051 1052 /**1053 1043 * 1054 1044 */ 1055 1045 public boolean compare(ITask task1, ITask task2) { 1056 return taskEqualityRuleManager.areSyntacticallyEqual(task1, task2);1046 return TaskEqualityRuleManager.getInstance().areSyntacticallyEqual(task1, task2); 1057 1047 } 1058 1048 } … … 1064 1054 1065 1055 /** 1066 * <p>1067 * the task equality manager needed for comparing tasks with each other1068 * </p>1069 */1070 private TaskEqualityRuleManager taskEqualityRuleManager;1071 1072 /**1073 *1074 */1075 public SemanticalComparer(TaskEqualityRuleManager taskEqualityRuleManager) {1076 this.taskEqualityRuleManager = taskEqualityRuleManager;1077 }1078 1079 /**1080 1056 * 1081 1057 */ 1082 1058 public boolean compare(ITask task1, ITask task2) { 1083 return taskEqualityRuleManager.areSemanticallyEqual(task1, task2);1059 return TaskEqualityRuleManager.getInstance().areSemanticallyEqual(task1, task2); 1084 1060 } 1085 1061 } … … 1090 1066 private static class DefaultComparer implements Comparer { 1091 1067 1092 /**1093 * <p>1094 * the task equality manager needed for comparing tasks with each other1095 * </p>1096 */1097 private TaskEqualityRuleManager taskEqualityRuleManager;1098 1099 1068 /** 1100 1069 * <p> … … 1107 1076 * 1108 1077 */ 1109 public DefaultComparer(TaskEqualityRuleManager taskEqualityRuleManager, 1110 TaskEquality minimalNodeEquality) 1111 { 1112 this.taskEqualityRuleManager = taskEqualityRuleManager; 1078 public DefaultComparer(TaskEquality minimalNodeEquality) { 1113 1079 this.minimalNodeEquality = minimalNodeEquality; 1114 1080 } … … 1118 1084 */ 1119 1085 public boolean compare(ITask task1, ITask task2) { 1120 return taskEqualityRuleManager.areAtLeastEqual(task1, task2, minimalNodeEquality); 1086 return TaskEqualityRuleManager.getInstance().areAtLeastEqual 1087 (task1, task2, minimalNodeEquality); 1121 1088 } 1122 1089 }
Note: See TracChangeset
for help on using the changeset viewer.