au.com.scds.chats.dom.activity.Activities.java Source code

Java tutorial

Introduction

Here is the source code for au.com.scds.chats.dom.activity.Activities.java

Source

/*
 *
 *  Copyright 2015 Stephen Cameron Data Services
 *
 *
 *  Licensed under the Apache License, Version 2.0 (the
 *  "License"); you may not use this file except in compliance
 *  with the License.  You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License.
 */
package au.com.scds.chats.dom.activity;

import java.util.List;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar;
import org.apache.isis.applib.query.QueryDefault;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalTime;

import au.com.scds.chats.dom.general.names.Region;

/**
 * <user>
 * <p>
 * Container for <link>Activity<link> domain entities.
 * </p>
 * </user>
 * 
 * @author stevec
 *
 */
@DomainService(repositoryFor = ActivityEvent.class)
@DomainServiceLayout(named = "Activities", menuOrder = "10")
public class Activities {

    public Activities() {
    }

    // used for testing
    public Activities(DomainObjectContainer container) {
        this.container = container;
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "1")
    public RecurringActivity createRecurringActivity(
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "Activity name") final String name,
            @Parameter(optionality = Optionality.MANDATORY, maxLength = 25) @ParameterLayout(named = "Abbreviated name") final String abbreviatedName,
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "Start date time") final DateTime startDateTime) {
        final RecurringActivity obj = container.newTransientInstance(RecurringActivity.class);
        obj.setName(name);
        obj.setAbbreviatedName(abbreviatedName);
        obj.setStartDateTime(startDateTime);
        container.persistIfNotAlready(obj);
        container.flush();
        return obj;
    }

    @Programmatic
    public RecurringActivity createRecurringActivity(final String name, final DateTime startDateTime,
            final Region region) {
        final RecurringActivity obj = container.newTransientInstance(RecurringActivity.class);
        obj.setName(name);
        obj.setStartDateTime(startDateTime);
        obj.setRegion(region);
        container.persistIfNotAlready(obj);
        container.flush();
        return obj;
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "5")
    public List<RecurringActivity> listAllRecurringActivities() {
        return container.allInstances(RecurringActivity.class);
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "3")
    public List<RecurringActivity> findRecurringActivityByName(@ParameterLayout(named = "Name") final String name) {
        return container.allMatches(
                new QueryDefault<>(RecurringActivity.class, "findRecurringActivityByName", "name", name));
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "2")
    public ActivityEvent createOneOffActivity(
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "Activity name") final String name,
            @Parameter(optionality = Optionality.MANDATORY, maxLength = 25) @ParameterLayout(named = "Abbreviated name") final String abbreviatedName,
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "Start date time") final DateTime startDateTime) {
        final ActivityEvent obj = container.newTransientInstance(ActivityEvent.class);
        obj.setName(name);
        obj.setAbbreviatedName(abbreviatedName);
        obj.setStartDateTime(startDateTime);
        container.persistIfNotAlready(obj);
        container.flush();
        return obj;
    }

    // used for data-migration
    @Programmatic
    public ActivityEvent createOneOffActivity(String name, DateTime startDateTime, Region region) {
        final ActivityEvent obj = container.newTransientInstance(ActivityEvent.class);
        obj.setName(name);
        obj.setAbbreviatedName("TO-DO");
        obj.setStartDateTime(startDateTime);
        obj.setRegion(region);
        container.persistIfNotAlready(obj);
        container.flush();
        return obj;
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "4")
    public List<ActivityEvent> findActivityByName(@ParameterLayout(named = "Name") final String name) {
        return container.allMatches(new QueryDefault<>(ActivityEvent.class, "findActivityByName", "name", name));
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "6")
    public List<ActivityEvent> listAllFutureActivities() {
        return container.allMatches(new QueryDefault<>(ActivityEvent.class, "findAllFutureActivities",
                "currentDateTime", new DateTime()));
    }

    //@Action(semantics = SemanticsOf.SAFE)
    //@ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    //@MemberOrder(sequence = "7")
    @Programmatic
    public List<ActivityEvent> listAllPastActivities() {
        return container.allMatches(new QueryDefault<>(ActivityEvent.class, "findAllPastActivities",
                "currentDateTime", new DateTime()));
    }

    @Programmatic
    public List<ActivityEvent> allActivities() {
        return container.allMatches(new QueryDefault<>(ActivityEvent.class, "findActivities"));
    }

    @Action(semantics = SemanticsOf.SAFE)
    @ActionLayout(bookmarking = BookmarkPolicy.NEVER)
    @MemberOrder(sequence = "7")
    public List<ActivityEvent> listActivitiesInPeriod(
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "Start Period") LocalDate start,
            @Parameter(optionality = Optionality.MANDATORY) @ParameterLayout(named = "End Period") LocalDate end) {
        return container
                .allMatches(new QueryDefault<>(ActivityEvent.class, "findActivitiesInPeriod", "startDateTime",
                        start.toDateTimeAtStartOfDay(), "endDateTime", end.toDateTime(new LocalTime(23, 59))));
    }

    @javax.inject.Inject
    DomainObjectContainer container;

}