1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package org.insa.algo;
-
- import java.util.ArrayList;
- import java.util.EnumSet;
- import java.util.List;
-
- import org.insa.algo.AbstractInputData.ArcFilter;
- import org.insa.graph.AccessRestrictions.AccessMode;
- import org.insa.graph.AccessRestrictions.AccessRestriction;
- import org.insa.graph.Arc;
-
- public class ArcFilterFactory {
-
- /**
- * @return List of all arc filters in this factory.
- */
- public static List<ArcFilter> getAllFilters() {
- List<ArcFilter> filters = new ArrayList<>();
-
- // Common filters:
-
- // 1. No filter (all arcs allowed):
- filters.add(new ArcFilter() {
- @Override
- public boolean isAllowed(Arc arc) {
- return true;
- }
-
- @Override
- public String toString() {
- return "All roads are allowed.";
- }
- });
-
- // 2. Only road allowed for cars:
- filters.add(new ArcFilter() {
- @Override
- public boolean isAllowed(Arc arc) {
- return arc.getRoadInformation().getAccessRestrictions()
- .isAllowedForAny(AccessMode.MOTORCAR, EnumSet.complementOf(EnumSet
- .of(AccessRestriction.FORBIDDEN, AccessRestriction.PRIVATE)));
- }
-
- @Override
- public String toString() {
- return "Only roads open for cars.";
- }
- });
-
- // 3. Non-private roads for pedestrian and bicycle:
- filters.add(new ArcFilter() {
- @Override
- public boolean isAllowed(Arc arc) {
- return arc.getRoadInformation().getAccessRestrictions()
- .isAllowedForAny(AccessMode.FOOT, EnumSet.complementOf(EnumSet
- .of(AccessRestriction.FORBIDDEN, AccessRestriction.PRIVATE)));
- }
-
- @Override
- public String toString() {
- return "Non-private roads for pedestrian.";
- }
- });
-
- // 3. Add your own filters here (do not forget to implement toString() to get an
- // understandable output!):
-
- return filters;
- }
-
- }
|