diff --git a/.env b/.env
index 318092a..b8f782c 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,4 @@
COMPOSE_FILE=docker-compose.yml:./optional/docker-db-compose.yml
-WAIT_HOSTS=mysql:3306
\ No newline at end of file
+SQL_HOST=docker-mysql
+SQL_USER=root
+SQL_PASSWORD=root
diff --git a/Dockerfile b/Dockerfile
index df82b1d..2ba3c07 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,6 @@
FROM tomcat:latest
-COPY ./target/RESOservice-1.0.war /usr/local/tomcat/webapps/
+#Not needed while volume mapped for development
+#COPY ./target/RESOservice-1.0.war /usr/local/tomcat/webapps/
-CMD ["catalina.sh", "run"]
\ No newline at end of file
+CMD ["catalina.sh", "run"]
diff --git a/build.sh b/build.sh
index 2aa91ab..12ae197 100644
--- a/build.sh
+++ b/build.sh
@@ -4,4 +4,3 @@ mvn compile
mvn package
docker-compose build
-rm -rf temp/spring-server-generated
diff --git a/docker-compose.yml b/docker-compose.yml
index bdb4537..05cd43a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -8,6 +8,10 @@ services:
ports:
- 8080:8080
environment:
- - WAIT_HOSTS
+ - SQL_HOST
+ - SQL_USER
+ - SQL_PASSWORD
+ volumes:
+ - ./target:/usr/local/tomcat/webapps
# depends_on:
# - docker-mysql
diff --git a/optional/docker-db-compose.yml b/optional/docker-db-compose.yml
index 3e05f50..fec8bb6 100644
--- a/optional/docker-db-compose.yml
+++ b/optional/docker-db-compose.yml
@@ -4,8 +4,9 @@ services:
restart: always
container_name: docker-mysql
image: mysql
+ command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_DATABASE: odata_manager
+ MYSQL_DATABASE: reso_data_dictionary_1_7
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
volumes:
diff --git a/pom.xml b/pom.xml
index cebec99..b4e881e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,6 +26,13 @@
provided
+
+ mysql
+ mysql-connector-java
+ 8.0.23
+ runtime
+
+
org.apache.olingo
odata-server-api
diff --git a/src/main/java/org/reso/service/data/LookupEntityCollectionProcessor.java b/src/main/java/org/reso/service/data/LookupEntityCollectionProcessor.java
index cedbf2b..af5a892 100644
--- a/src/main/java/org/reso/service/data/LookupEntityCollectionProcessor.java
+++ b/src/main/java/org/reso/service/data/LookupEntityCollectionProcessor.java
@@ -17,16 +17,33 @@ import org.apache.olingo.server.api.uri.UriInfo;
import org.apache.olingo.server.api.uri.UriResource;
import org.apache.olingo.server.api.uri.UriResourceEntitySet;
import org.reso.service.edmprovider.LookupEdmProvider;
+import org.reso.service.servlet.RESOservlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Date;
+import java.util.Map;
+
public class LookupEntityCollectionProcessor implements EntityCollectionProcessor
{
private OData odata;
private ServiceMetadata serviceMetadata;
+ private Connection connect = null;
+ private Statement statement = null;
+ private PreparedStatement preparedStatement = null;
+ private ResultSet resultSet = null;
+ private static final Logger LOG = LoggerFactory.getLogger(LookupEntityCollectionProcessor.class);
public void init(OData odata, ServiceMetadata serviceMetadata) {
this.odata = odata;
@@ -71,30 +88,54 @@ public class LookupEntityCollectionProcessor implements EntityCollectionProcesso
if(LookupEdmProvider.ES_LOOKUPS_NAME.equals(edmEntitySet.getName())) {
List productList = lookupsCollection.getEntities();
- // add some sample product entities
- final Entity e1 = new Entity()
- .addProperty(new Property(null, "LookupKey", ValueType.PRIMITIVE, "ABC123"))
- .addProperty(new Property(null, "LookupName", ValueType.PRIMITIVE, "CountyOrParish"))
- .addProperty(new Property(null, "LookupValue", ValueType.PRIMITIVE,
- "Los Angeles County"));
- e1.setId(createId("Lookups", 1));
- productList.add(e1);
+ Map properties = System.getenv();
- final Entity e2 = new Entity()
- .addProperty(new Property(null, "LookupKey", ValueType.PRIMITIVE, "BCD124"))
- .addProperty(new Property(null, "LookupName", ValueType.PRIMITIVE, "CountyOrParish"))
- .addProperty(new Property(null, "LookupValue", ValueType.PRIMITIVE,
- "Ventura County"));
- e2.setId(createId("Lookups", 1));
- productList.add(e2);
+ try {
- final Entity e3 = new Entity()
- .addProperty(new Property(null, "LookupKey", ValueType.PRIMITIVE, "CDE125"))
- .addProperty(new Property(null, "LookupName", ValueType.PRIMITIVE, "CountyOrParish"))
- .addProperty(new Property(null, "LookupValue", ValueType.PRIMITIVE,
- "Contra Costa County"));
- e3.setId(createId("Lookups", 1));
- productList.add(e3);
+ String mysqlHost = properties.get("SQL_HOST");
+ String mysqlUser = properties.get("SQL_USER");
+ String mysqlPwd = properties.get("SQL_PASSWORD");
+
+ LOG.info("looking to connect to jdbc:mysql://"+mysqlHost+"/reso_data_dictionary_1_7");
+ connect = DriverManager
+ .getConnection("jdbc:mysql://"+mysqlHost+"/reso_data_dictionary_1_7?"
+ + "user="+mysqlUser+"&password="+mysqlPwd);
+
+ // Statements allow to issue SQL queries to the database
+ statement = connect.createStatement();
+ // Result set get the result of the SQL query
+ resultSet = statement.executeQuery("select * from lookup");
+
+ // add the lookups from the database.
+ while (resultSet.next())
+ {
+ String lookupKey = resultSet.getString("LookupKey");
+ Entity ent = new Entity()
+ .addProperty(new Property(null, "LookupKey", ValueType.PRIMITIVE, lookupKey))
+ .addProperty(new Property(null, "LookupName", ValueType.PRIMITIVE, resultSet.getString("LookupName")))
+ .addProperty(new Property(null, "LookupValue", ValueType.PRIMITIVE,resultSet.getString("LookupValue")))
+ .addProperty(new Property(null, "StandardLookupValue", ValueType.PRIMITIVE,resultSet.getString("StandardLookupValue")))
+ .addProperty(new Property(null, "LegacyOdataValue", ValueType.PRIMITIVE,resultSet.getString("LegacyOdataValue")))
+ .addProperty(new Property(null, "ModificationTimestamp", ValueType.PRIMITIVE,resultSet.getDate("ModificationTimestamp")));
+
+ ent.setId(createId("Lookups", lookupKey));
+ productList.add(ent);
+ }
+
+ statement.close();
+
+ } catch (Exception e) {
+ LOG.error("Server Error occurred in reading Lookups", e);
+ return lookupsCollection;
+ } finally {
+ try
+ {
+ connect.close();
+ } catch (Exception e) {
+ LOG.error("Server Error closing connection", e);
+ }
+ return lookupsCollection;
+ }
}
return lookupsCollection;
diff --git a/src/main/java/org/reso/service/edmprovider/LookupEdmProvider.java b/src/main/java/org/reso/service/edmprovider/LookupEdmProvider.java
index 7831656..3352701 100644
--- a/src/main/java/org/reso/service/edmprovider/LookupEdmProvider.java
+++ b/src/main/java/org/reso/service/edmprovider/LookupEdmProvider.java
@@ -102,6 +102,13 @@ public class LookupEdmProvider extends CsdlAbstractEdmProvider
List schemas = new ArrayList();
schemas.add(schema);
+ CsdlEnumType type = new CsdlEnumType();
+ type.setMembers(new ArrayList());
+ type.setName("EnumTest");
+ type.setUnderlyingType(EdmPrimitiveTypeKind.Int64.getFullQualifiedName());
+
+ schema.getEnumTypes().add(type);
+
return schemas;
}
diff --git a/src/main/java/org/reso/service/servlet/RESOservlet.java b/src/main/java/org/reso/service/servlet/RESOservlet.java
index a7f80e3..85967f6 100644
--- a/src/main/java/org/reso/service/servlet/RESOservlet.java
+++ b/src/main/java/org/reso/service/servlet/RESOservlet.java
@@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.ArrayList;
+import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.*;
@@ -20,6 +21,27 @@ public class RESOservlet extends HttpServlet
private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(RESOservlet.class);
+
+ @Override public void init() throws ServletException
+ {
+ super.init();
+
+ Map env = System.getenv();
+ for (String envName : env.keySet()) {
+ LOG.debug( String.format("ENV VAR: %s=%s%n",
+ envName,
+ env.get(envName))
+ );
+ }
+
+ try {
+ Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
+ } catch (Exception e) {
+ LOG.error("Server Error occurred in connecting to the database", e);
+ }
+ }
+
+
protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
try {
// create odata handler and configure it with CsdlEdmProvider and Processor
@@ -32,7 +54,7 @@ public class RESOservlet extends HttpServlet
handler.process(req, resp);
} catch (RuntimeException e) {
- LOG.error("Server Error occurred in ExampleServlet", e);
+ LOG.error("Server Error occurred in RESOservlet", e);
throw new ServletException(e);
}
}