protected String processMapType( String typeName, boolean exceptUtil, String mapPkg, String mapName) { final String mapBegin = mapName + "<"; final String mapEnd = ">"; if (typeName.startsWith(mapBegin) && typeName.endsWith(mapEnd)) { final ScopeInfo scope = Srl.extractScopeWide(typeName, mapBegin, mapEnd); final String content = scope.getContent(); final String keyType = Srl.substringFirstFront(content, ",").trim(); final String valueType = Srl.substringFirstRear(content, ",").trim(); final String resolvedValueType = doResolvePackageName(valueType, exceptUtil); return mapPkg + "." + mapBegin + keyType + ", " + resolvedValueType + mapEnd; } else { return null; } }
// ----------------------------------------------------- // Result Handling // --------------- protected void processDomainHandling(DfCustomizeEntityInfo entityInfo, Table tbl) { final DfPmbMetaData pmbMetaData = entityInfo.getPmbMetaData(); if (pmbMetaData == null || !pmbMetaData.isTypedReturnEntityPmb()) { final ExceptionMessageBuilder br = new ExceptionMessageBuilder(); br.addNotice("The 'domain' option was not related to a typed parameter-bean."); br.addItem("Advice"); br.addElement("A 'domain' option should be defined with a typed parameter-bean"); br.addElement("that is typed to things returning an entity."); br.addElement("For example:"); br.addElement(" (x): selectDomainMember.sql"); br.addElement(" (o): MemberBhv_selectDomainMember.sql"); br.addElement(" (x):"); br.addElement(" -- #df:entity#"); br.addElement(" -- +domain+"); br.addElement(""); br.addElement(" select MEMBER_ID, MEMBER_NAME, ... from MEMBER"); br.addElement(" (o):"); br.addElement(" -- #df:entity#"); br.addElement(" -- +domain+"); br.addElement(""); br.addElement(" -- !df:pmb!"); br.addElement(""); br.addElement(" select MEMBER_ID, MEMBER_NAME, ... from MEMBER"); br.addItem("SQL File"); br.addElement(entityInfo.getSqlFile()); final String msg = br.buildExceptionMessage(); throw new DfCustomizeEntityMarkInvalidException(msg); } final String entityClassName = pmbMetaData.getEntityClassName(); if (Srl.is_Null_or_TrimmedEmpty(entityClassName)) { String msg = "The entity class name should not be null: " + entityInfo.getSqlFile(); throw new IllegalStateException(msg); // no way } final Database database = _schemaData.getDatabase(); Table domainTable = database.getTable(entityClassName); if (domainTable == null) { // retry without project-prefix for a class name final String projectPrefix = getBasicProperties().getProjectPrefix(); domainTable = database.getTable(Srl.substringFirstFront(entityClassName, projectPrefix)); } if (domainTable == null) { final ExceptionMessageBuilder br = new ExceptionMessageBuilder(); br.addNotice("The table of the behavior query was not found."); br.addItem("Advice"); br.addElement("A 'domain' option should be defined under behavior query."); br.addElement("And behavior query should have an existing table."); br.addElement("For example:"); br.addElement(" (x): MembooBhv_selectDomainMember.sql"); br.addElement(" (o): MemberBhv_selectDomainMember.sql"); br.addItem("SQL File"); br.addElement(entityInfo.getSqlFile()); final String msg = br.buildExceptionMessage(); throw new DfCustomizeEntityMarkInvalidException(msg); // basically no way } final List<Column> columnList = tbl.getColumnList(); for (Column column : columnList) { final Column found = domainTable.getColumn(column.getName()); if (found == null) { final ExceptionMessageBuilder br = new ExceptionMessageBuilder(); br.addNotice("The selected column was not a column of domain table."); br.addItem("Advice"); br.addElement("A selected column with a 'domain' option"); br.addElement("should be one of domain table."); br.addElement("For example:"); br.addElement(" (x):"); br.addElement(" select MEMBER_ID, 'noexist' as NO_EXIST from MEMBER"); br.addElement(" (o):"); br.addElement(" select MEMBER_ID, MEMBER_NAME from MEMBER"); br.addElement(" (o):"); br.addElement(" select member.* from MEMBER member"); br.addItem("SQL File"); br.addElement(entityInfo.getSqlFile()); br.addItem("Unknown Column"); br.addElement(column.getName()); br.addItem("Domain Table"); br.addElement(domainTable.getTableDbName()); final String msg = br.buildExceptionMessage(); throw new DfCustomizeEntityMarkInvalidException(msg); } } entityInfo.setEntityClassName(domainTable.getExtendedEntityClassName()); entityInfo.setEntityClassName(domainTable.getImmutableExtendedEntityClassName()); }
protected String doExtractCatalog() { final String pureUrl = Srl.substringFirstFront(_url, ";", "?", "&"); final String catalog = Srl.substringLastRear(pureUrl, "/", ":"); return !catalog.equals(pureUrl) ? catalog : null; }