diff --git a/src/main/java/org/leolo/nrdatad/db/BaseDao.java b/src/main/java/org/leolo/nrdatad/db/BaseDao.java index 973961f..383a8a9 100644 --- a/src/main/java/org/leolo/nrdatad/db/BaseDao.java +++ b/src/main/java/org/leolo/nrdatad/db/BaseDao.java @@ -1,7 +1,11 @@ package org.leolo.nrdatad.db; +import org.jetbrains.annotations.Nullable; + import java.sql.Connection; +import java.sql.PreparedStatement; import java.sql.SQLException; +import java.sql.Types; public abstract class BaseDao { @@ -15,4 +19,12 @@ public abstract class BaseDao { return manager.getConnection(); } + protected void setString(PreparedStatement stmt, int pos, @Nullable String data) throws SQLException{ + if(data==null){ + stmt.setNull(pos, Types.CHAR); + }else{ + stmt.setString(pos, data); + } + } + } diff --git a/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java b/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java new file mode 100644 index 0000000..8c125b9 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/db/CORPUSDao.java @@ -0,0 +1,27 @@ +package org.leolo.nrdatad.db; + +import org.leolo.nrdatad.org.leolo.nrdatad.model.CORPUS; + +import java.sql.SQLException; +import java.util.Collection; + +public abstract class CORPUSDao extends BaseDao{ + + public CORPUSDao(DatabaseManager manager) { + super(manager); + } + + public class QueryBuilder{ + + } + + public abstract Collection executeQuery(QueryBuilder query) throws SQLException; + + public abstract void add(CORPUS corpus) throws SQLException; + + public void addAll(Collection datas) throws SQLException { + for(CORPUS corpus: datas){ + add(corpus); + } + } +} diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java b/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java new file mode 100644 index 0000000..f1d13e1 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/db/mariadb/CORPUSDao.java @@ -0,0 +1,63 @@ +package org.leolo.nrdatad.db.mariadb; + +import org.jetbrains.annotations.NotNull; +import org.leolo.nrdatad.db.DatabaseManager; +import org.leolo.nrdatad.org.leolo.nrdatad.model.CORPUS; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Collection; + +public class CORPUSDao extends org.leolo.nrdatad.db.CORPUSDao { + + public CORPUSDao(DatabaseManager manager) { + super(manager); + } + + @Override + public Collection executeQuery(org.leolo.nrdatad.db.CORPUSDao.QueryBuilder query) throws SQLException { + return null; + } + + @Override + public void add(@NotNull CORPUS corpus) throws SQLException { + try( + Connection conn = getConnection(); + PreparedStatement pstmt = conn.prepareStatement( + "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc) " + + "VALUES (?,?,?,?,?,?,?)") + ){ + setString(pstmt, 1, corpus.getStanoxCode()); + setString(pstmt, 2, corpus.getUicCode()); + setString(pstmt, 3, corpus.getCrsCode()); + setString(pstmt, 4, corpus.getTiplocCode()); + setString(pstmt, 5, corpus.getNlcCode()); + setString(pstmt, 6, corpus.getLongDescription()); + setString(pstmt, 7, corpus.getShortDescription()); + pstmt.executeUpdate(); + } + } + + @Override + public void addAll(@NotNull Collection datas) throws SQLException { + try( + Connection conn = getConnection(); + PreparedStatement pstmt = conn.prepareStatement( + "INSERT INTO corpus (stanox, uic_code, crs_code, tiploc_code, nlc_code, `desc`, short_desc) " + + "VALUES (?,?,?,?,?,?,?)") + ){ + for(CORPUS corpus:datas) { + setString(pstmt, 1, corpus.getStanoxCode()); + setString(pstmt, 2, corpus.getUicCode()); + setString(pstmt, 3, corpus.getCrsCode()); + setString(pstmt, 4, corpus.getTiplocCode()); + setString(pstmt, 5, corpus.getNlcCode()); + setString(pstmt, 6, corpus.getLongDescription()); + setString(pstmt, 7, corpus.getShortDescription()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + } + } +} diff --git a/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/model/CORPUS.java b/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/model/CORPUS.java new file mode 100644 index 0000000..4eba6e6 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/model/CORPUS.java @@ -0,0 +1,69 @@ +package org.leolo.nrdatad.org.leolo.nrdatad.model; + +public class CORPUS { + + private String stanoxCode; + private String uicCode; + private String crsCode; + private String tiplocCode; + private String nlcCode; + + private String longDescription; + private String shortDescription; + + public String getStanoxCode() { + return stanoxCode; + } + + public void setStanoxCode(String stanoxCode) { + this.stanoxCode = stanoxCode; + } + + public String getUicCode() { + return uicCode; + } + + public void setUicCode(String uicCode) { + this.uicCode = uicCode; + } + + public String getCrsCode() { + return crsCode; + } + + public void setCrsCode(String crsCode) { + this.crsCode = crsCode; + } + + public String getTiplocCode() { + return tiplocCode; + } + + public void setTiplocCode(String tiplocCode) { + this.tiplocCode = tiplocCode; + } + + public String getNlcCode() { + return nlcCode; + } + + public void setNlcCode(String nlcCode) { + this.nlcCode = nlcCode; + } + + public String getLongDescription() { + return longDescription; + } + + public void setLongDescription(String longDescription) { + this.longDescription = longDescription; + } + + public String getShortDescription() { + return shortDescription; + } + + public void setShortDescription(String shortDescription) { + this.shortDescription = shortDescription; + } +}