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