/******************************************************************************* * Copyright 2014 Miami-Dade County * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package org.sharegov.cirm.rdb; import static org.sharegov.cirm.rdb.Sql.INSERT_INTO; import static org.sharegov.cirm.rdb.Sql.MERGE_INTO; import static org.sharegov.cirm.rdb.Sql.SELECT; import static org.sharegov.cirm.rdb.Sql.UPDATE; import mjson.Json; import org.junit.Test; public class SqlTest { @Test public void testSELECT() { String SELECT = SELECT() .COLUMN("COLUMN1") .COLUMN("COLUMN2") .FROM("TABLEA") .SQL(); } @Test public void testUPDATE() { String QUERY = SELECT() .COLUMN("COLUMN1") .FROM("TABLEA") .JOIN("TABLEB").ON("COLUMN1", "COLUMN2") .WHERE("COLUMN1").GREATER_THAN("?") .AND() .WHERE("COLUMN2").EQUALS("?") .OR() .WHERE("COLUMN1 = 1 OR 1=0") .SQL(); System.out.println(QUERY); //QUERY = INSERT_INTO("TABLEA"). // .VALUE } @Test public void testINSERT() { String SELECT = SELECT() .COLUMN("COLUMN1").AS("ALIAS1") .FROM("TABLEA").AS("A") .SQL(); } @Test public void testAdvancedSearchQuery() { Sql select = SELECT(); select .COLUMN("a.SR_REQUEST_ID").AS("SR_REQUEST_ID") .COLUMN("i2.IRI").AS("TYPE") .COLUMN("addr.FULL_ADDRESS").AS("FULL_ADDRESS") .COLUMN("addr.ZIP").AS("ZIP") .COLUMN("i1.IRI").AS("CITY") .COLUMN("a.SR_STATUS").AS("STATUS") .COLUMN("acts.COMPLETE_DATE").AS("COMPLETE_DATE") .COLUMN("a.CREATED_DATE").AS("CREATED_DATE") .COLUMN("CIRM_GIS_INFO.GIS_CMAINT").AS("GIS_CMAINT"); select.FROM("CIRM_SR_REQUESTS").AS("a"); String innerQuery = "(SELECT b.SR_REQUEST_ID, MAX(b.COMPLETE_DATE) lastActivityDate FROM CIRM_SR_ACTIVITY b GROUP BY b.SR_REQUEST_ID ORDER BY b.SR_REQUEST_ID ) tempSRActivity "; select.LEFT_OUTER_JOIN(innerQuery).ON("a.SR_REQUEST_ID", "tempSRActivity.SR_REQUEST_ID"); select.LEFT_OUTER_JOIN("CIRM_SR_ACTIVITY acts").ON("tempSRActivity.lastActivityDate", "acts.COMPLETE_DATE"); select.LEFT_OUTER_JOIN("CIRM_MDC_ADDRESS addr").ON("a.SR_REQUEST_ADDRESS", "addr.ADDRESS_ID"); select.LEFT_OUTER_JOIN("CIRM_IRI i1").ON("addr.CITY", "i1.ID"); select.LEFT_OUTER_JOIN("CIRM_CLASSIFICATION cl").ON("cl.SUBJECT","a.SR_REQUEST_ID"); select.LEFT_OUTER_JOIN("CIRM_IRI i2").ON("cl.OWLCLASS", "i2.ID"); select.LEFT_OUTER_JOIN("CIRM_GIS_INFO").ON("a.GIS_INFO_ID","CIRM_GIS_INFO.ID"); select.WHERE("cl.TO_DATE IS NULL"); System.out.println(select.SQL()); } @Test public void testMERGE() { String table = "CIRM_SR_REQUESTS"; String columnIRI = "CIRM_SR_REQUESTS.SR_REQUEST_ID"; Sql MERGE = MERGE_INTO("CIRM_SR_REQUESTS", "A") .USING(SELECT().COLUMN("SR_REQUEST_ID").FROM("CIRM_SR_REQUESTS").WHERE("SR_REQUEST_ID").EQUALS("75036"), "B") .ON(columnIRI.replace(table, "A"), columnIRI.replace(table, "B")) .WHEN_MATCHED_THEN(UPDATE(table) .SET("CIRM_SR_REQUESTS.SR_STATUS".replace(table, "A"), "'CLOSE'") .WHERE(columnIRI.replace(table, "A")).EQUALS("75036")) .WHEN_NOT_MATCHED_THEN(INSERT_INTO(table).VALUES(columnIRI.replace(table, "A"), "75036")); System.out.print(MERGE.SQL()); } @Test public void testMERGEAlias() { String table = "CIRM_SR_REQUESTS"; String columnIRI = "CIRM_SR_REQUESTS.SR_REQUEST_ID"; Sql MERGE = MERGE_INTO("CIRM_SR_REQUESTS", "A") .USING(SELECT().COLUMN("?").AS("SR_REQUEST_ID").COLUMN("?").AS("SR_REQUEST_TYPE").FROM("CIRM_SR_REQUESTS").WHERE("SR_REQUEST_ID").EQUALS("75036"), "B") .ON(columnIRI.replace(table, "A"), columnIRI.replace(table, "B")) .WHEN_MATCHED_THEN(UPDATE(table) .SET("CIRM_SR_REQUESTS.SR_STATUS".replace(table, "A"), "'CLOSE'") .WHERE(columnIRI.replace(table, "A")).EQUALS("75036")) .WHEN_NOT_MATCHED_THEN(INSERT_INTO(table).VALUES(columnIRI.replace(table, "A"), "75036")); System.out.print(MERGE.SQL()); } }