fix lab 5 and 6
This commit is contained in:
@@ -8,49 +8,24 @@ import java.util.Map;
|
|||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
class Lab5 {
|
class Lab5 {
|
||||||
|
|
||||||
public static String getGrade(String module, String student, String assessment,
|
public static String getGrade(String module, String student, String assessment,
|
||||||
Map<String, Map<String, Map<String, String>>> db) {
|
Map<String, Map<String, Map<String, String>>> db) {
|
||||||
Constant<Actually<Map<String, Map<String, Map<String, String>>>>> constantDb = new Constant<>() {
|
Constant<Actually<Map<String, Map<String, Map<String, String>>>>> constantDb = () -> Actually.ok(db);
|
||||||
@Override
|
|
||||||
public Actually<Map<String, Map<String, Map<String, String>>>> init() {
|
|
||||||
return Actually.ok(db);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Constant<String> constantNoEntry = new Constant<>() {
|
Constant<String> constantNoEntry = () -> "No such entry";
|
||||||
@Override
|
|
||||||
public String init() {
|
|
||||||
return "No such entry";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Immutator<Actually<Map<String, Map<String, String>>>, Map<String, Map<String, Map<String, String>>>> getModule = new Immutator<>() {
|
Immutator<Actually<Map<String, Map<String, String>>>, Map<String, Map<String, Map<String, String>>>> getModule = param -> Actually
|
||||||
@Override
|
.ok(param.get(module));
|
||||||
public Actually<Map<String, Map<String, String>>> invoke(Map<String, Map<String, Map<String, String>>> param) {
|
|
||||||
return Actually.ok(param.get(module));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Immutator<Actually<Map<String, String>>, Map<String, Map<String, String>>> getStudent = new Immutator<>() {
|
|
||||||
@Override
|
|
||||||
public Actually<Map<String, String>> invoke(Map<String, Map<String, String>> param) {
|
|
||||||
return Actually.ok(param.get(student));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Immutator<Actually<String>, Map<String, String>> getAssessment = new Immutator<>() {
|
Immutator<Actually<Map<String, String>>, Map<String, Map<String, String>>> getStudent = param -> Actually
|
||||||
@Override
|
.ok(param.get(student));
|
||||||
public Actually<String> invoke(Map<String, String> param) {
|
|
||||||
return Actually.ok(param.get(assessment).toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
Immutator<Actually<String>, Map<String, String>> getAssessment = param -> Actually
|
||||||
|
.ok(param.get(assessment).toString());
|
||||||
|
|
||||||
|
return constantDb.init().next(getModule).next(getStudent).next(getAssessment).except(constantNoEntry);
|
||||||
|
|
||||||
return constantDb
|
|
||||||
.init()
|
|
||||||
.next(getModule)
|
|
||||||
.next(getStudent)
|
|
||||||
.next(getAssessment)
|
|
||||||
.except(constantNoEntry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@@ -14,9 +14,12 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
return failure;
|
return failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public abstract <R> Actually<R> transform(Immutator<? extends R, ? super T> immutator);
|
||||||
|
|
||||||
public abstract T unwrap() throws Exception;
|
public abstract T unwrap() throws Exception;
|
||||||
|
|
||||||
public abstract T except(Constant<? extends T> c);
|
public abstract <U extends T> T except(Constant<? extends U> c);
|
||||||
|
|
||||||
public abstract void finish(Action<? super T> action);
|
public abstract void finish(Action<? super T> action);
|
||||||
|
|
||||||
@@ -37,7 +40,7 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T except(Constant<? extends T> c) {
|
public <U extends T> T except(Constant<? extends U> c) {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +117,7 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object except(Constant<? extends Object> c) {
|
public <U> U except(Constant<? extends U> c) {
|
||||||
return c.init();
|
return c.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
|
|
||||||
public abstract T unwrap() throws Exception;
|
public abstract T unwrap() throws Exception;
|
||||||
|
|
||||||
public abstract T except(Constant<? extends T> c);
|
public abstract <U extends T> T except(Constant<? extends U> c);
|
||||||
|
|
||||||
public abstract void finish(Action<? super T> action);
|
public abstract void finish(Action<? super T> action);
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T except(Constant<? extends T> c) {
|
public <U extends T> T except(Constant<? extends U> c) {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object except(Constant<? extends Object> c) {
|
public <U> U except(Constant<? extends U> c) {
|
||||||
return c.init();
|
return c.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user