diff --git a/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java b/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java index 8fab54e..a0af137 100644 --- a/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java +++ b/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java @@ -4,7 +4,9 @@ import org.leolo.nrdatad.model.CORPUS; import java.sql.SQLException; import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; public abstract class CORPUSDao extends BaseDao{ @@ -12,11 +14,97 @@ public abstract class CORPUSDao extends BaseDao{ super(manager); } - public class QueryBuilder{ + public static class QueryBuilder{ + private Set stanox = new HashSet<>(); + private Set uicCode = new HashSet<>(); + private Set crsCode = new HashSet<>(); + private Set tiplocCode = new HashSet<>(); + private Set nlcCode = new HashSet<>(); + private Set description = new HashSet<>(); + SearchMode searchMode = SearchMode.MATCH_ALL_GROUP; + public void setSearchMode(SearchMode searchMode) { + this.searchMode = searchMode; + } + + public void addStanox(String stanox){ + this.stanox.add(stanox); + } + + public void addUicCode(String uicCode){ + this.uicCode.add(uicCode); + } + + public void addCrsCode(String crsCode){ + this.crsCode.add(crsCode); + } + + public void addTiplocCode(String tiplocCode){ + this.tiplocCode.add(tiplocCode); + } + + public void addNlcCode(String nlcCode){ + this.nlcCode.add(nlcCode); + } + + public void addDescription(String description){ + this.description.add(description); + } + + public Query build(){ + return new Query(stanox, uicCode, crsCode, tiplocCode, nlcCode, description, searchMode); + } + } + + public static class Query{ + private Set stanox = new HashSet<>(); + private Set uicCode = new HashSet<>(); + private Set crsCode = new HashSet<>(); + private Set tiplocCode = new HashSet<>(); + private Set nlcCode = new HashSet<>(); + private Set description = new HashSet<>(); + SearchMode searchMode = SearchMode.MATCH_ALL_GROUP; + + private Query(Set stanox, Set uicCode, Set crsCode, Set tiplocCode, Set nlcCode, Set description, SearchMode searchMode) { + this.stanox = stanox; + this.uicCode = uicCode; + this.crsCode = crsCode; + this.tiplocCode = tiplocCode; + this.nlcCode = nlcCode; + this.description = description; + this.searchMode = searchMode; + } + + protected Set getStanox() { + return stanox; + } + + protected Set getUicCode() { + return uicCode; + } + + protected Set getCrsCode() { + return crsCode; + } + + protected Set getTiplocCode() { + return tiplocCode; + } + + protected Set getNlcCode() { + return nlcCode; + } + + protected Set getDescription() { + return description; + } + + protected SearchMode getSearchMode() { + return searchMode; + } } - public abstract Collection executeQuery(QueryBuilder query) throws SQLException; + public abstract Collection executeQuery(Query query) throws SQLException; public abstract void add(CORPUS corpus) throws SQLException; diff --git a/src/main/java/org/leolo/nrdatad/db/SearchMode.java b/src/main/java/org/leolo/nrdatad/db/SearchMode.java new file mode 100644 index 0000000..28e2118 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/db/SearchMode.java @@ -0,0 +1,7 @@ +package org.leolo.nrdatad.db; + +public enum SearchMode { + MATCH_ALL, + MATCH_ALL_GROUP, + MATCH_ANY; +} diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java b/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java index badcc3e..3a2b7e6 100644 --- a/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java +++ b/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java @@ -21,7 +21,7 @@ public class CORPUSDao extends org.leolo.nrdatad.db.CORPUSDao { } @Override - public Collection executeQuery(org.leolo.nrdatad.db.CORPUSDao.QueryBuilder query) throws SQLException { + public Collection executeQuery(org.leolo.nrdatad.db.CORPUSDao.Query query) throws SQLException { return null; }