-
Notifications
You must be signed in to change notification settings - Fork 19
adding an additional import format for a CDB domain
craigmcchesney edited this page May 11, 2021
·
6 revisions
Cable Catalog Item Connector Name Description Connector Type Is Male 91795 S-F-1 female safeconn connector #SAFECONN FALSE
- subclass extends ImportHelperBase (or a class derived from it) and specifies type parameters for the domain object the import process will create and the controller to use for creating them, e.g.,
public class ImportHelperCableCatalogConnectors extends ImportHelperBase<ItemConnector, ItemConnectorController> { <snip>
- override getEntityController() e.g.,
@Override public ItemConnectorController getEntityController() { return ItemConnectorController.getInstance(); }
- override getFilenameBase() e.g.,
@Override public String getFilenameBase() { return "Cable Catalog Connectors"; }
- override getColumnSpecs() with a column spec for each column of the import spreadsheet format e.g.,
@Override protected List<ColumnSpec> getColumnSpecs() { List<ColumnSpec> specs = new ArrayList<>(); specs.add(new IdOrNameRefColumnSpec( "Cable Catalog Item", "item", "setItem", "ID or name of parent cable catalog item. Name must be unique and prefixed with '#'.", null, ColumnModeOptions.rCREATE(), ItemDomainCableCatalogController.getInstance(), Item.class, null)); specs.add(new StringColumnSpec( "Connector Name", KEY_NAME, "setImportConnectorName", "Name for cable connector.", null, ColumnModeOptions.rCREATE(), 128)); specs.add(new StringColumnSpec( "Description", KEY_DESCRIPTION, "setImportConnectorDescription", "Connector description.", null, ColumnModeOptions.oCREATE(), 128)); specs.add(new IdOrNameRefColumnSpec( "Connector Type", KEY_TYPE, "setImportConnectorType", "ID or name of connector type. Name must be unique and prefixed with '#'.", null, ColumnModeOptions.oCREATE(), ConnectorTypeController.getInstance(), Item.class, null)); specs.add(new BooleanColumnSpec( "Is Male", KEY_GENDER, "setImportConnectorGender", "True/yes/1 if connector gender is male.", null, ColumnModeOptions.oCREATE())); return specs; }
- add override of createEntityInstance() to helper subclass to perform custom actions while creating entities from the spreadsheet e.g.,
@Override protected CreateInfo createEntityInstance(Map<String, Object> rowMap) { boolean isValid = true; String validString = ""; ItemConnector itemConnector = new ItemConnector(); // create Connector String connectorName = (String) rowMap.get(KEY_NAME); String connectorDesc = (String) rowMap.get(KEY_DESCRIPTION); Boolean connectorIsMale = (Boolean) rowMap.get(KEY_GENDER); ConnectorType connectorType = (ConnectorType) rowMap.get(KEY_TYPE); itemConnector.setImportConnectorDetails(connectorName, connectorDesc, connectorIsMale, connectorType); return new CreateInfo(itemConnector, isValid, validString); }
- add methods if needed to handle column specs, e.g., for the "Connector Name" column above, need methods ItemConnector.set/getImportConnectorName(). In this case, they just access a transient instance variable for display in the import validation table. The work to actually retrieve the specified ConnectorType and create the corresponding Connector is triggered by createEntityInstance() as described above. e.g.,
- add methods as needed to support createEntityInstance() in creating and initializing the new entity instance, e.g.,
public void setImportConnectorDetails( String connectorName, String connectorDesc, Boolean isMale, ConnectorType connectorType) { Connector connector = new Connector(); connector.setName(connectorName); connector.setDescription(connectorDesc); connector.setIsMale(isMale); connector.setConnectorType(connectorType); this.setConnector(connector); }
- modify initializeDomainImportInfo() in the controller to add an entry for the new helper e.g.,
@Override protected DomainImportExportInfo initializeDomainImportInfo() { List<ImportExportFormatInfo> formatInfo = new ArrayList<>(); formatInfo.add(new ImportExportFormatInfo( "Basic Cable Catalog Format", ImportHelperCableCatalog.class)); formatInfo.add(new ImportExportFormatInfo( "Cable Catalog Connector Creation Format", ImportHelperCableCatalogConnectors.class)); String completionUrl = "/views/itemDomainCableCatalog/list?faces-redirect=true"; return new DomainImportExportInfo(formatInfo, completionUrl); }