package com.moparisthebest.jdbc.codegen; import com.moparisthebest.jdbc.ListQueryMapper; import com.moparisthebest.jdbc.ResultSetMapper; import com.moparisthebest.jdbc.TypeReference; import com.moparisthebest.jdbc.dto.*; import com.moparisthebest.jdbc.util.CaseInsensitiveHashMap; import com.moparisthebest.jdbc.util.ResultSetIterable; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import java.util.Map; //IFJAVA8_START import java.util.stream.Collectors; import java.util.stream.Stream; import java.time.*; //IFJAVA8_END import static com.moparisthebest.jdbc.ListQueryMapper.inListReplace; public class QueryMapperTypeQmDao extends QueryMapperQmDao { public QueryMapperTypeQmDao(final Connection conn, final ResultSetMapper rsm) { super(conn, rsm); } @Override public FieldPerson getFieldRegularPerson(final long personNo) throws SQLException { return qm.toType(personRegular, new TypeReference() {}, personNo); } @Override public BuilderPerson getBuilderPerson(final long personNo) throws SQLException { return qm.toType(personRegular, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldRegularAndUnderscore(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscore, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldRegularAndUnderscoreReverse(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreReverse, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldRegularAndUnderscoreNoConstructor(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreNoConstructor, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldRegularAndUnderscoreReverseNoConstructor(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreReverseNoConstructor, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldRegular(final long personNo) throws SQLException { return qm.toType(bossRegular, new TypeReference() {}, personNo); } @Override public FieldBoss getFieldUnderscore(final long personNo) throws SQLException { return qm.toType(bossUnderscore, new TypeReference() {}, personNo); } @Override public SetPerson getSetRegularPerson(final long personNo) throws SQLException { return qm.toType(personRegular, new TypeReference() {}, personNo); } @Override public SetPerson getSetRegularPersonNoConstructor(final long personNo) throws SQLException { return qm.toType(personRegularNoConstructor, new TypeReference() {}, personNo); } @Override public SetBoss getSetRegularAndUnderscore(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscore, new TypeReference() {}, personNo); } @Override public SetBoss getSetRegularAndUnderscoreReverse(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreReverse, new TypeReference() {}, personNo); } @Override public SetBoss getSetRegular(final long personNo) throws SQLException { return qm.toType(bossRegular, new TypeReference() {}, personNo); } @Override public SetBoss getSetUnderscore(final long personNo) throws SQLException { return qm.toType(bossUnderscore, new TypeReference() {}, personNo); } @Override public ReverseFieldPerson getReverseFieldRegularPerson(final long personNo) throws SQLException { return qm.toType(personRegular, new TypeReference() {}, personNo); } @Override public ReverseFieldBoss getReverseFieldRegularAndUnderscore(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscore, new TypeReference() {}, personNo); } @Override public ReverseFieldBoss getReverseFieldRegularAndUnderscoreReverse(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreReverse, new TypeReference() {}, personNo); } @Override public ReverseFieldBoss getReverseFieldRegular(final long personNo) throws SQLException { return qm.toType(bossRegular, new TypeReference() {}, personNo); } @Override public ReverseFieldBoss getReverseFieldUnderscore(final long personNo) throws SQLException { return qm.toType(bossUnderscore, new TypeReference() {}, personNo); } @Override public ReverseSetPerson getReverseSetRegularPerson(final long personNo) throws SQLException { return qm.toType(personRegular, new TypeReference() {}, personNo); } @Override public ReverseSetBoss getReverseSetRegularAndUnderscore(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscore, new TypeReference() {}, personNo); } @Override public ReverseSetBoss getReverseSetRegularAndUnderscoreReverse(final long personNo) throws SQLException { return qm.toType(bossRegularAndUnderscoreReverse, new TypeReference() {}, personNo); } @Override public ReverseSetBoss getReverseSetRegular(final long personNo) throws SQLException { return qm.toType(bossRegular, new TypeReference() {}, personNo); } @Override public ReverseSetBoss getReverseSetUnderscore(final long personNo) throws SQLException { return qm.toType(bossUnderscore, new TypeReference() {}, personNo); } @Override public Long getPersonNo(final long personNo) throws SQLException { return qm.toType(selectPersonNo, new TypeReference() {}, personNo); } @Override public long getPersonNoPrimitive(final long personNo) throws SQLException { return super.getPersonNoPrimitive(personNo); // todo: anything we can do with primitives here? //return qm.toType(selectPersonNo, new TypeReference() {}, personNo); } @Override public int getPersonNoPrimitiveInt(final int personNo) throws SQLException { return super.getPersonNoPrimitiveInt(personNo); // todo: anything we can do with primitives here? //return qm.toType(selectPersonNo, new TypeReference() {}, personNo); } @Override public Long[] getPersonNoObjectArray(final Long personNo) throws SQLException { return qm.toType(selectPersonNo, new TypeReference() {}, personNo); } @Override public List> getAllNames() throws SQLException { return qm.toType(allNames, new TypeReference>>() {}); } @Override public Map[] getAllNamesArray() throws SQLException { return qm.toType(allNames, new TypeReference[]>() {}); } @Override public Map getAllNameMap() throws SQLException { return qm.toType(allNames, new TypeReference>() {}); } @Override public Map getMapLongPerson() throws SQLException { return qm.toType(selectMapLongPerson, new TypeReference>() {}); } @Override public Map getMapLongLong() throws SQLException { return qm.toType(selectLongLong, new TypeReference>() {}); } @Override public Long[] getLongObjectArray() throws SQLException { return super.getLongObjectArray(); // todo: anything we can do with @SingleRow here? //return qm.toType(selectLongArray, new TypeReference() {}); } @Override public long[] getLongPrimitiveArray() throws SQLException { return super.getLongPrimitiveArray(); // todo: anything we can do with @SingleRow here? //return qm.toType(selectLongArray, new TypeReference() {}); } @Override public List> getBobTomMap() throws SQLException { return qm.toType(bobTomMap, new TypeReference>>() {}); } @Override public List> getBobTomMapCaseInsensitive() throws SQLException { return qm.toType(bobTomMap, new TypeReference>>() {}); } @Override public List getThreePeople(final long personNo1, final long personNo2, final long personNo3) throws SQLException { return qm.toType(selectThreePeople, new TypeReference>() {}, personNo1, personNo2, personNo3); } @Override public ResultSetIterable getThreePeopleResultSetIterable(final long personNo1, final long personNo2, final long personNo3) throws SQLException { return qm.toType(selectThreePeople, new TypeReference>() {}, personNo1, personNo2, personNo3); } //IFJAVA8_START @Override public Stream getThreePeopleStream(final long personNo1, final long personNo2, final long personNo3) throws SQLException { return qm.toType(selectThreePeople, new TypeReference>() {}, personNo1, personNo2, personNo3); } //IFJAVA8_END @Override public EnumPerson getEnumPerson(long personNo) throws SQLException { return qm.toType("SELECT first_name, last_name FROM person WHERE person_no = ?", new TypeReference() {}, personNo); } @Override public EnumPerson getEnumPersonConstructor(long personNo) throws SQLException { return qm.toType("SELECT first_name FROM person WHERE person_no = ?", new TypeReference() {}, personNo); } @Override public FirstName getFirstName(long personNo) throws SQLException { return qm.toType("SELECT first_name FROM person WHERE person_no = ?", new TypeReference() {}, personNo); } @Override public EnumPerson getEnumPersonNull() throws SQLException { return qm.toType("SELECT str_val as first_name, str_val as last_name FROM val WHERE val_no = 4", new TypeReference() {}); } @Override public FirstName getFirstNameNull() throws SQLException { return qm.toType("SELECT str_val FROM val WHERE val_no = 4", new TypeReference() {}); } @Override public CaseSensitivePerson getCaseSensitivePerson(long personNo) throws SQLException { return qm.toType("SELECT first_name AS M_PERSON_FIRST_NAME FROM person WHERE person_no = ?", new TypeReference() {}, personNo); } //IFJAVA8_START @Override public Instant getBirthdateInstant(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public LocalDateTime getBirthdateLocalDateTime(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public LocalDate getBirthdateLocalDate(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public LocalTime getBirthdateLocalTime(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public ZonedDateTime getBirthdateZonedDateTime(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public OffsetDateTime getBirthdateOffsetDateTime(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public OffsetTime getBirthdateOffsetTime(long personNo) throws SQLException { return qm.toType(selectBirthDate, new TypeReference() {}, personNo); } @Override public Year getYearInt(long valNo) throws SQLException { return qm.toType(selectNumVal, new TypeReference() {}, valNo); } @Override public Year getYearString(long valNo) throws SQLException { return qm.toType(selectStrVal, new TypeReference() {}, valNo); } @Override public ZoneId getZoneId(long valNo) throws SQLException { return qm.toType(selectStrVal, new TypeReference() {}, valNo); } @Override public ZoneOffset getZoneOffsetInt(long valNo) throws SQLException { return qm.toType(selectNumVal, new TypeReference() {}, valNo); } @Override public ZoneOffset getZoneOffsetString(long valNo) throws SQLException { return qm.toType(selectStrVal, new TypeReference() {}, valNo); } @Override public List getFieldPeopleStream(final Stream personNos) throws SQLException { return lqm.toType("SELECT * from person WHERE " + inListReplace + " ORDER BY person_no", new TypeReference>() {}, lqm.inList("person_no", personNos.collect(Collectors.toList()))); } //IFJAVA8_END @Override public List getFieldPeople(final List personNos) throws SQLException { return lqm.toType("SELECT * from person WHERE " + ListQueryMapper.inListReplace + " ORDER BY person_no", new TypeReference>() {}, lqm.inList("person_no", personNos)); } @Override public List getFieldPeopleByName(final List personNos, final List names) throws SQLException { return lqm.toType("SELECT * from person WHERE " + inListReplace + " AND (" + inListReplace + " OR " + inListReplace + ") ORDER BY person_no", new TypeReference>() {}, lqm.inList("person_no", personNos), lqm.inList("first_name", names), lqm.inList("last_name", names) ); } @Override public List getFieldPeopleNotIn(final List personNos) throws SQLException { return lqm.toType("SELECT * from person WHERE " + ListQueryMapper.inListReplace + " ORDER BY person_no", new TypeReference>() {}, lqm.notInList("person_no", personNos)); } }