protected void checkForRepeatedSlots() { for (DomainClass domClass : classes.values()) { DomainEntity superDomClass = domClass.getSuperclass(); if (superDomClass != null) { for (Slot slot : domClass.getSlotsList()) { if (superDomClass.findSlot(slot.getName()) != null) { System.err.printf("WARNING: Slot named '%s' in class '%s' already exists in a superclass\n", slot.getName(), domClass.getName()); } if (superDomClass.findRoleSlot(slot.getName()) != null) { System.err.printf("WARNING: Slot named '%s' in class '%s' already exists in a superclass as role slot\n", slot.getName(), domClass.getName()); } } for (Role role : domClass.getRoleSlotsList()) { if (superDomClass.findSlot(role.getName()) != null) { System.err.printf( "WARNING: Role slot named '%s' in class '%s' already exists in a superclass as a slot\n", role.getName(), domClass.getName()); } if (superDomClass.findRoleSlot(role.getName()) != null) { System.err.printf( "WARNING: Role slot named '%s' in class '%s' already exists in a superclass as role slot\n", role.getName(), domClass.getName()); } } } } }
public static String getExpectedTableName(final DomainClass domainClass) { if (domainClass.getSuperclass() == null) { return getTableName(domainClass.getName()); } return domainClass.getSuperclass() instanceof DomainClass ? getExpectedTableName((DomainClass) domainClass .getSuperclass()) : null; }
protected void generateOneClass(final DomainClass domClass) { final String packageName = domClass.getPackageName(); writeToFile(new File(getBaseDirectoryFor(packageName), domClass.getBaseName() + ".java"), new WriteProcedure() { @Override public void doIt(PrintWriter out) { generateFilePreamble(packageName, out); generateBaseClass(domClass, out); } }); // don't generate non-base classes for an external definition. if (compArgs.isExternalDefinition(domClass.getSourceFile())) { return; } File leafClassFile = new File(getDirectoryFor(packageName), domClass.getName() + ".java"); if (!leafClassFile.exists()) { writeToFile(leafClassFile, new WriteProcedure() { @Override public void doIt(PrintWriter out) { generatePublicFilePreamble(packageName, out); generatePublicClass(domClass, out); } }); } }
protected void generatePublicClass(DomainClass domClass, PrintWriter out) { String leafClassName = domClass.getName(); // This should be the other way around, but that would cause API disruption String modifier = domClass.hasModifier(Modifier.PROTECTED) ? "" : "public"; printWords(out, modifier, "class", leafClassName, "extends", domClass.getBaseName()); newBlock(out); generatePublicClassConstructors(leafClassName, out); closeBlock(out); }