The excel sheet content:
"
Category        Origin  firstdate       LastDate        PartNumber      
Description
Mat             Imp             1/1/2017        2/28/2018       A-2103-753-A    
BM1(2016-QF)
"

The incorrect result, in columns Category and Origin, displayed after a import:
Description     Part Number     First Date         Last Date    Category        
Origin
BM1(2016-QF)  A-2103-753-A     01-01-2017   28-02-2018     (none)       (none)


The source code:

ComponentRepository.java
"
@DomainService(
        nature = NatureOfService.DOMAIN,
        repositoryFor = Component.class
)
public class ComponentRepository {

    public static final WorksheetSpec WORKSHEET_SPEC =
            new WorksheetSpec(Component.class, "Sheet1");

    @Programmatic
    public java.util.List<Component> listAll() {
        return container.allInstances(Component.class);
    }

    @Programmatic
    public Component findByDescription(
            final String description
    ) {
        return container.uniqueMatch(
                new org.apache.isis.applib.query.QueryDefault<>(
                        Component.class,
                        "findByDescription",
                        "description", description));
    }

    @Programmatic
    public java.util.List<Component> findByDescriptionContains(
            final String description
    ) {
        return container.allMatches(
                new org.apache.isis.applib.query.QueryDefault<>(
                        Component.class,
                        "findByDescriptionContains",
                        "description", description));
    }

    @Programmatic
    public Component create(
            final String description,
            final String partNumber,
            final LocalDate firstDate,
            final LocalDate lastDate,
            final ComponentCategory category,
            final ComponentOrigin origin) {
        final Component component =
container.newTransientInstance(Component.class);
        component.setDescription(description);
        component.setPartNumber(partNumber);
        component.setFirstDate(firstDate);
        component.setLastDate(lastDate);
        component.setCategory(category);
        component.setOrigin(origin);
        container.persistIfNotAlready(component);
        return component;
    }

    @Programmatic
    public Component findOrCreate(
            final String description
    ) {
        Component component = findByDescription(description);
        if (component == null) {
            // (commented until i solve the error here) component =
create(description);
        }
        return component;
    }

    @Programmatic
    public List<Component> importExcel(
            final Blob spreadsheet) {
            final List<Component> components =
                    excelService.fromExcel(spreadsheet, WORKSHEET_SPEC);
            container.informUser(components.size() + " items imported");

        for (final Component obj : components) {
            container.persistIfNotAlready(obj);
        }

            return components;
    }

    @javax.inject.Inject
    org.apache.isis.applib.DomainObjectContainer container;

    @javax.inject.Inject
    private ExcelService excelService;
}
"

ComponentMenu.java
"
@DomainService(
        nature = NatureOfService.VIEW_MENU_ONLY
)
@DomainServiceLayout(
        named = "Components",
        menuOrder = "210"
)
public class ComponentMenu {

    @Action(
            semantics = SemanticsOf.SAFE,
            restrictTo = RestrictTo.PROTOTYPING
    )
    @ActionLayout(
            bookmarking = BookmarkPolicy.AS_ROOT
    )
    @MemberOrder(sequence = "1")
    public java.util.List<Component> allComponents() {
        return componentrepository.listAll();
    }

    @Action(
            semantics = SemanticsOf.SAFE
    )
    @ActionLayout(
            bookmarking = BookmarkPolicy.AS_ROOT
    )
    @MemberOrder(sequence = "2")
    public java.util.List<Component> findByDescription(
            @ParameterLayout(named="Description")
            final String description
    ) {
        return componentrepository.findByDescriptionContains(description);
    }

    @Action(
    )
    @MemberOrder(sequence = "3")
    public Component create(
            @ParameterLayout(named="Description") final String description,
            @ParameterLayout(named="Part Number") final String partNumber,
            @ParameterLayout(named="First Date") final LocalDate firstDate,
            @ParameterLayout(named="Last Date") final LocalDate lastDate,
            @ParameterLayout(named="Category") final ComponentCategory category,
            @ParameterLayout(named="Origin") final ComponentOrigin origin
            ) {
        return componentrepository.create(
                description,
                partNumber,
                firstDate,
                lastDate,
                category,
                origin);
    }

    @Action(
    )
    @MemberOrder(sequence = "4")
    public List<Component> importExcel(
            @Parameter(fileAccept = ".xlsx")
            @ParameterLayout(named="Excel spreadsheet")
            final org.apache.isis.applib.value.Blob spreadsheet) {
        return componentrepository.importExcel(spreadsheet);
    }

    @javax.inject.Inject
    ComponentRepository componentrepository;

    @javax.inject.Inject
    private ModelRepository modelRepo;
}
"

Component.java
"
@PersistenceCapable(
        identityType = IdentityType.DATASTORE,
        schema = "PPB",
        table = "Component"
)
@DatastoreIdentity(
        strategy = IdGeneratorStrategy.IDENTITY,
        column = "id")
@Version(
        strategy = VersionStrategy.VERSION_NUMBER,
        column = "version")
@Queries({
        @Query(
                name = "find", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "),
        @Query(
                name = "findByDescriptionContains", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "
                        + "WHERE description.indexOf(:description) >= 0 "),
        @Query(
                name = "findByDescription", language = "JDOQL",
                value = "SELECT "
                        + "FROM domainapp.dom.PPB.Component "
                        + "WHERE description == :description ")
})
@DomainObject(
        editing = Editing.DISABLED,
        bounded=true
)
@DomainObjectLayout(
        bookmarking = BookmarkPolicy.AS_ROOT
)
@MemberGroupLayout(columnSpans = {6,6,0,12}, left={"General"}, middle="Details")

public class Component implements Comparable<Component> {

    @Title(sequence="1")
    @MemberOrder(name="General", sequence="1")
    @Column(allowsNull = "false")
    @Getter @Setter
    private String description;

    // region > part number (property)

    @MemberOrder(name="General", sequence="2")
    @Column(allowsNull = "true")
    @Getter @Setter
    private String partNumber;
    // endregion

    // region > first date, last date (property)

    @MemberOrder(name="General", sequence="3")
    @Column(allowsNull = "false")
    @Getter @Setter
    private LocalDate firstDate;

    @MemberOrder(name="General", sequence="4")
    @Column(allowsNull = "false")
    @Getter @Setter
    private LocalDate lastDate;
    //endregion

    // region > category (property)

    @Column(allowsNull = "true")
    @MemberOrder(name="Details", sequence="1")
    @Getter @Setter
    private ComponentCategory category;

    @Column(allowsNull = "true")
    @MemberOrder(name="Details", sequence="2")
    @Getter @Setter
    private ComponentOrigin origin;
    // endregion

    // region > associated models (property)
    // endregion

    //region > compareTo, toString
    @Override
    public int compareTo(final Component other) {
        return org.apache.isis.applib.util.ObjectContracts.compare(this,
other, "description");
    }

    @Override
    public String toString() {
        return org.apache.isis.applib.util.ObjectContracts.toString(this,
"description");
    }
    //endregion

}
"



2017-03-09 1:00 GMT-04:00, Stephen Cameron <[email protected]>:
> Code snippet?
>
> On Thu, Mar 9, 2017 at 2:04 PM, L Eder <[email protected]> wrote:
>
>> Hi members:
>>
>> In this issue only the value property columns are imported.
>> Except the reference property columns, who values appear wrongly as
>> '(none)'.
>>
>> Has anyone experienced this issue?
>> Thanks, eder
>>
>

Reply via email to