- 
                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 10, 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);        
    }