You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2016/10/23 14:23:59 UTC
[18/28] zest-java git commit: ZEST-180, ZEST-186, ZEST-187,
ZEST-188 Big Identity refactoring UnitOfWorkFactory is auto added to
all modules that doesn't declare one IdentityGenerator is auto-added to all
modules that deosn't declare one. Removed DCI/DDD
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/assembly/Assembler.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/assembly/Assembler.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/assembly/Assembler.java
deleted file mode 100644
index 6572766..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/assembly/Assembler.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.bootstrap.assembly;
-
-import java.util.function.Function;
-import org.apache.zest.api.structure.Application;
-import org.apache.zest.api.structure.Module;
-import org.apache.zest.api.value.ValueSerialization;
-import org.apache.zest.bootstrap.ApplicationAssembler;
-import org.apache.zest.bootstrap.ApplicationAssembly;
-import org.apache.zest.bootstrap.ApplicationAssemblyFactory;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.LayerAssembly;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
-import org.apache.zest.index.rdf.RdfIndexingEngineService;
-import org.apache.zest.library.rdf.entity.EntityStateSerializer;
-import org.apache.zest.library.rdf.entity.EntityTypeSerializer;
-import org.apache.zest.library.rdf.repository.MemoryRepositoryService;
-import org.apache.zest.sample.dcicargo.pathfinder_a.api.GraphTraversalService;
-import org.apache.zest.sample.dcicargo.pathfinder_a.internal.GraphDAO;
-import org.apache.zest.sample.dcicargo.pathfinder_a.internal.GraphTraversalServiceImpl;
-import org.apache.zest.sample.dcicargo.sample_a.bootstrap.DCISampleApplication_a;
-import org.apache.zest.sample.dcicargo.sample_a.bootstrap.sampledata.BaseDataService;
-import org.apache.zest.sample.dcicargo.sample_a.bootstrap.sampledata.SampleDataService;
-import org.apache.zest.sample.dcicargo.sample_a.communication.query.BookingQueries;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.CargoRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.CargosRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.HandlingEventRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.HandlingEventsRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.ItineraryRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.rolemap.RouteSpecificationRoleMap;
-import org.apache.zest.sample.dcicargo.sample_a.context.support.ApplicationEvents;
-import org.apache.zest.sample.dcicargo.sample_a.context.support.RegisterHandlingEventAttemptDTO;
-import org.apache.zest.sample.dcicargo.sample_a.context.support.RoutingService;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.TrackingId;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.Delivery;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.ExpectedHandlingEvent;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEvent;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Leg;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.UnLocode;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.CarrierMovement;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Schedule;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.VoyageNumber;
-import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
-import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService;
-
-import static org.apache.zest.api.common.Visibility.application;
-import static org.apache.zest.api.structure.Application.Mode.development;
-
-/**
- * Zest assembly of the DCI Sample application (version A)
- *
- * A Zest application structure is declared by an assembly that defines which layers and modules
- * the application has and how they are allowed to depend on each other. Each layer could have it's
- * own assembly file in larger applications (read more at http://zest.apache.org/latest/core-bootstrap-assembly.html).
- *
- * The Zest assembly doesn't follow a strict 1-1 correlation between the directory hierarchy and
- * the assembly structures. An example is the Entities:
- *
- * Entities can be promoted to Role Players when they are needed to play a Role in a Context.
- * One Role Map is created for each Entity and it lists Roles in different Contexts that the Entity
- * can play. It hence has knowledge about the Context layer. If an Entity is in a Role Map it doesn't
- * get assembled as an Entity down in the Data layer but rather up in the CONTEXT-EntityRole module.
- * The Entities left behind without Roles could still have been assembled in a DATA-Entity module but
- * to avoid swapping Entities up and down between the Data and Context layers we have them all in the
- * Context layer. Note that there are still no "physical" upward dependencies from the Entities to
- * layers above.
- *
- * So dependency structure layers (ie. as shown by Structure101) are not the same as Zest layers.
- * See more at http://zest.apache.org/latest/core-bootstrap-assembly.html
- *
- * TRY THIS: Run VisualizeApplicationStructure to see a cool visualization of the assembly below!
- */
-@SuppressWarnings( "unchecked" )
-public class Assembler
- implements ApplicationAssembler
-{
- public ApplicationAssembly assemble( ApplicationAssemblyFactory applicationFactory )
- throws AssemblyException
- {
- // Application assembly
- ApplicationAssembly assembly = applicationFactory.newApplicationAssembly();
- assembly.setName( "DCI Sample (version A)" );
- assembly.setVersion( "A.1.0" );
- assembly.setMode( development );
-
- // Layers (adding bottom-up - will be assembled in this order)
- LayerAssembly infrastructureLayer = assembly.layer( "INFRASTRUCTURE" );
- LayerAssembly dataLayer = assembly.layer( "DATA" );
- LayerAssembly contextLayer = assembly.layer( "CONTEXT" );
- LayerAssembly communicationLayer = assembly.layer( "COMMUNICATION" );
- LayerAssembly bootstrapLayer = assembly.layer( "BOOTSTRAP" );
-
- // Layer dependencies
- bootstrapLayer.uses(
- communicationLayer,
- contextLayer,
- dataLayer,
- infrastructureLayer );
-
- communicationLayer.uses(
- contextLayer,
- dataLayer,
- infrastructureLayer );
-
- contextLayer.uses(
- dataLayer,
- infrastructureLayer );
-
- dataLayer.uses(
- infrastructureLayer
- );
-
- // Assemble
- assembleBootstrapLayer( bootstrapLayer );
- assembleCommunicationLayer( communicationLayer );
- assembleContextLayer( contextLayer );
- assembleDataLayer( dataLayer );
- assembleInfrastructureLayer( infrastructureLayer );
-
- return assembly;
- }
-
- private void assembleBootstrapLayer( LayerAssembly bootstrapLayer )
- throws AssemblyException
- {
- ModuleAssembly bootstrapModule = bootstrapLayer.module( "BOOTSTRAP-Bootstrap" );
- bootstrapModule
- .objects(
- DCISampleApplication_a.class );
-
- // Load sample data on startup
- bootstrapModule
- .addServices(
- BaseDataService.class )
- .instantiateOnStartup();
- bootstrapModule
- .addServices(
- SampleDataService.class )
- .instantiateOnStartup();
- }
-
- private void assembleCommunicationLayer( LayerAssembly communicationLayer )
- throws AssemblyException
- {
- ModuleAssembly queryModule = communicationLayer.module( "COMMUNICATION-Query" );
- queryModule
- .transients(
- BookingQueries.class )
- .visibleIn( application );
-
- queryModule.services( UuidIdentityGeneratorService.class );
-
- queryModule.values(
- Cargo.class,
- Location.class,
- HandlingEvent.class,
- Voyage.class
- );
- }
-
- private void assembleContextLayer( LayerAssembly contextLayer )
- throws AssemblyException
- {
- // Role-playing entities
- ModuleAssembly entityRoleModule = contextLayer.module( "CONTEXT-EntityRole" );
- entityRoleModule.entities( CargoRoleMap.class,
- CargosRoleMap.class,
- HandlingEventRoleMap.class,
- HandlingEventsRoleMap.class )
- .visibleIn( application );
-
- // Non-role-playing entities
- ModuleAssembly entityNonRoleModule = contextLayer.module( "CONTEXT-EntityNonRole" );
- entityNonRoleModule
- .entities(
- Location.class,
- Voyage.class )
- .visibleIn( application );
-
- // Role-playing values
- ModuleAssembly valueRoleModule = contextLayer.module( "CONTEXT-ValueRole" );
- valueRoleModule
- .values(
- ItineraryRoleMap.class,
- RouteSpecificationRoleMap.class )
- .visibleIn( application );
-
- ModuleAssembly contextSupportModule = contextLayer.module( "CONTEXT-ContextSupport" );
- contextSupportModule
- .addServices(
- RoutingService.class,
- ApplicationEvents.class )
- .visibleIn( application );
-
- contextSupportModule
- .values(
- RegisterHandlingEventAttemptDTO.class )
- .visibleIn( application );
- }
-
- private void assembleDataLayer( LayerAssembly dataLayer )
- throws AssemblyException
- {
- // Non-role-playing values
- ModuleAssembly dataModule = dataLayer.module( "DATA-Data" );
- dataModule
- .values(
- TrackingId.class,
- Delivery.class,
- ExpectedHandlingEvent.class,
- UnLocode.class,
- Leg.class,
- CarrierMovement.class,
- Schedule.class,
- VoyageNumber.class )
- .visibleIn( application );
- }
-
- private void assembleInfrastructureLayer( LayerAssembly infrastructureLayer )
- throws AssemblyException
- {
- ModuleAssembly serializationModule = infrastructureLayer.module( "INFRASTRUCTURE-Serialization" );
- serializationModule
- .services( OrgJsonValueSerializationService.class )
- .taggedWith( ValueSerialization.Formats.JSON )
- .setMetaInfo( (Function<Application, Module>) application1 -> application1.findModule( "CONTEXT", "CONTEXT-ContextSupport" ) )
- .visibleIn( application );
-
- ModuleAssembly indexingModule = infrastructureLayer.module( "INFRASTRUCTURE-Indexing" );
- indexingModule
- .objects(
- EntityStateSerializer.class,
- EntityTypeSerializer.class );
-
- indexingModule
- .addServices(
- MemoryRepositoryService.class,
- RdfIndexingEngineService.class )
- .instantiateOnStartup()
- .visibleIn( application );
-
- ModuleAssembly entityStoreModule = infrastructureLayer.module( "INFRASTRUCTURE-EntityStore" );
- entityStoreModule
- .addServices(
- MemoryEntityStoreService.class,
- UuidIdentityGeneratorService.class )
- .instantiateOnStartup()
- .visibleIn( application );
-
- ModuleAssembly externalServiceModule = infrastructureLayer.module( "INFRASTRUCTURE-ExternalService" );
- externalServiceModule
- .importedServices(
- GraphTraversalService.class )
- .setMetaInfo( new GraphTraversalServiceImpl( new GraphDAO() ) )
- .visibleIn( application );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseData.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseData.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseData.java
deleted file mode 100644
index 8575a69..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseData.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.bootstrap.sampledata;
-
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.apache.zest.api.structure.Module;
-import org.apache.zest.api.value.ValueBuilder;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.RouteSpecification;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Itinerary;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Leg;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.UnLocode;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.CarrierMovement;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Schedule;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-
-/**
- * Test base class with shared Locations, Voyages etc.
- */
-public abstract class BaseData
-{
- protected Module module;
-
- protected static UnLocode AUMEL;
- protected static UnLocode CNHGH;
- protected static UnLocode CNHKG;
- protected static UnLocode CNSHA;
- protected static UnLocode DEHAM;
- protected static UnLocode FIHEL;
- protected static UnLocode JNTKO;
- protected static UnLocode NLRTM;
- protected static UnLocode SEGOT;
- protected static UnLocode SESTO;
- protected static UnLocode USCHI;
- protected static UnLocode USDAL;
- protected static UnLocode USNYC;
-
- public BaseData( Module module )
- {
- this.module = module;
- }
-
- protected UnLocode unlocode( String unlocodeString )
- {
- ValueBuilder<UnLocode> unlocode = module.newValueBuilder( UnLocode.class );
- unlocode.prototype().code().set( unlocodeString );
- return unlocode.newInstance();
- }
-
- protected CarrierMovement carrierMovement( Location depLoc, Location arrLoc, LocalDate depDate, LocalDate arrDate )
- {
- ValueBuilder<CarrierMovement> carrierMovement = module.newValueBuilder( CarrierMovement.class );
- carrierMovement.prototype().departureLocation().set( depLoc );
- carrierMovement.prototype().arrivalLocation().set( arrLoc );
- carrierMovement.prototype().departureDate().set( depDate );
- carrierMovement.prototype().arrivalDate().set( arrDate );
- return carrierMovement.newInstance();
- }
-
- protected Schedule schedule( CarrierMovement... carrierMovements )
- {
- ValueBuilder<Schedule> schedule = module.newValueBuilder( Schedule.class );
- List<CarrierMovement> cm = new ArrayList<>();
- cm.addAll( Arrays.asList( carrierMovements ) );
- schedule.prototype().carrierMovements().set( cm );
- return schedule.newInstance();
- }
-
- protected Leg leg( Voyage voyage, Location load, Location unload, LocalDate loadDate, LocalDate unloadDate )
- {
- ValueBuilder<Leg> leg = module.newValueBuilder( Leg.class );
- leg.prototype().voyage().set( voyage );
- leg.prototype().loadLocation().set( load );
- leg.prototype().unloadLocation().set( unload );
- leg.prototype().loadDate().set( loadDate );
- leg.prototype().unloadDate().set( unloadDate );
- return leg.newInstance();
- }
-
- protected Itinerary itinerary( Leg... legArray )
- {
- ValueBuilder<Itinerary> itinerary = module.newValueBuilder( Itinerary.class );
- List<Leg> legs = new ArrayList<Leg>();
- legs.addAll( Arrays.asList( legArray ) );
- itinerary.prototype().legs().set( legs );
- return itinerary.newInstance();
- }
-
- protected RouteSpecification routeSpecification( Location origin, Location destination, LocalDate deadline )
- {
- ValueBuilder<RouteSpecification> routeSpec = module.newValueBuilder( RouteSpecification.class );
- routeSpec.prototype().origin().set( origin );
- routeSpec.prototype().destination().set( destination );
- routeSpec.prototype().arrivalDeadline().set( deadline );
- return routeSpec.newInstance();
- }
-
- protected static LocalDate day( int days )
- {
- return LocalDate.now().plusDays( days );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseDataService.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseDataService.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseDataService.java
deleted file mode 100644
index f1d5291..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/BaseDataService.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.bootstrap.sampledata;
-
-import org.apache.zest.api.activation.ActivatorAdapter;
-import org.apache.zest.api.activation.Activators;
-import org.apache.zest.api.entity.EntityBuilder;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.service.ServiceComposite;
-import org.apache.zest.api.service.ServiceReference;
-import org.apache.zest.api.structure.Module;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.value.ValueBuilder;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargos;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEvents;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.UnLocode;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Schedule;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.VoyageNumber;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.zest.api.usecase.UsecaseBuilder.newUsecase;
-
-/**
- * Create basic sample data
- */
-@Mixins( BaseDataService.Mixin.class )
-@Activators( BaseDataService.Activator.class )
-public interface BaseDataService
- extends ServiceComposite
-{
-
- void createBaseData()
- throws Exception;
-
- class Activator
- extends ActivatorAdapter<ServiceReference<BaseDataService>>
- {
-
- @Override
- public void afterActivation( ServiceReference<BaseDataService> activated )
- throws Exception
- {
- activated.get().createBaseData();
- }
- }
-
- public abstract class Mixin extends BaseData
- implements BaseDataService
- {
- private static final Logger logger = LoggerFactory.getLogger( BaseDataService.class );
-
- public Mixin( @Structure Module module )
- {
- super( module );
- }
-
- @Override
- public void createBaseData()
- throws Exception
- {
- logger.debug( "CREATING BASIC DATA..." );
- UnitOfWork uow = module.unitOfWorkFactory().newUnitOfWork( newUsecase( "Open uow for " ) );
- try
- {
- // UnLocode value objects
- AUMEL = unlocode( "AUMEL" ); // Melbourne
- CNHGH = unlocode( "CNHGH" ); // Hangzou
- CNHKG = unlocode( "CNHKG" ); // Hong Kong
- CNSHA = unlocode( "CNSHA" ); // Shanghai
- DEHAM = unlocode( "DEHAM" ); // Hamburg
- FIHEL = unlocode( "FIHEL" ); // Helsinki
- JNTKO = unlocode( "JNTKO" ); // Tokyo
- NLRTM = unlocode( "NLRTM" ); // Rotterdam
- SEGOT = unlocode( "SEGOT" ); // Gothenburg
- SESTO = unlocode( "SESTO" ); // Stockholm
- USCHI = unlocode( "USCHI" ); // Chicago
- USDAL = unlocode( "USDAL" ); // Dallas
- USNYC = unlocode( "USNYC" ); // New York
-
- // Location entity objects
- Location MELBOURNE = location( AUMEL, "Melbourne" );
- Location HANGZHOU = location( CNHGH, "Hangzhou" );
- Location HONGKONG = location( CNHKG, "Hongkong" );
- Location SHANGHAI = location( CNSHA, "Shanghai" );
- Location HAMBURG = location( DEHAM, "Hamburg" );
- Location HELSINKI = location( FIHEL, "Helsinki" );
- Location TOKYO = location( JNTKO, "Tokyo" );
- Location ROTTERDAM = location( NLRTM, "Rotterdam" );
- Location GOTHENBURG = location( SEGOT, "Gothenburg" );
- Location STOCKHOLM = location( SESTO, "Stockholm" );
- Location CHICAGO = location( USCHI, "Chicago" );
- Location DALLAS = location( USDAL, "Dallas" );
- Location NEWYORK = location( USNYC, "New York" );
-
- // Voyage entity objects
- Voyage V100S = voyage( "V100S", schedule(
- carrierMovement( NEWYORK, CHICAGO, day( 1 ), day( 2 ) ),
- carrierMovement( CHICAGO, DALLAS, day( 8 ), day( 9 ) )
- ) );
- Voyage V200T = voyage( "V200T", schedule(
- carrierMovement( NEWYORK, CHICAGO, day( 7 ), day( 8 ) ),
- carrierMovement( CHICAGO, DALLAS, day( 8 ), day( 9 ) )
- ) );
- Voyage V300A = voyage( "V300A", schedule(
- carrierMovement( DALLAS, HAMBURG, day( 10 ), day( 14 ) ),
- carrierMovement( HAMBURG, STOCKHOLM, day( 15 ), day( 16 ) ),
- carrierMovement( STOCKHOLM, HELSINKI, day( 17 ), day( 18 ) )
- ) );
- Voyage V400S = voyage( "V400S", schedule(
- carrierMovement( TOKYO, ROTTERDAM, day( 9 ), day( 15 ) ),
- carrierMovement( ROTTERDAM, HAMBURG, day( 15 ), day( 16 ) ),
- carrierMovement( HAMBURG, MELBOURNE, day( 17 ), day( 26 ) ),
- carrierMovement( MELBOURNE, TOKYO, day( 27 ), day( 33 ) )
- ) );
- Voyage V500S = voyage( "V500S", schedule(
- carrierMovement( HAMBURG, STOCKHOLM, day( 17 ), day( 19 ) ),
- carrierMovement( STOCKHOLM, HELSINKI, day( 20 ), day( 21 ) )
- ) );
-
- // Cargo and HandlingEvent factories
- Cargos CARGOS = uow.newEntity( Cargos.class, Cargos.CARGOS_ID );
- uow.newEntity( HandlingEvents.class, HandlingEvents.HANDLING_EVENTS_ID );
-
- logger.debug( "BASIC DATA CREATED" );
- uow.complete();
- }
- catch( Exception e )
- {
- uow.discard();
- logger.error( "CANNOT CREATE BASIC DATA" );
- throw e;
- }
- }
-
- private Location location( UnLocode unlocode, String locationStr )
- {
- UnitOfWork uow = module.unitOfWorkFactory().currentUnitOfWork();
- EntityBuilder<Location> location = uow.newEntityBuilder( Location.class, unlocode.code().get() );
- location.instance().unLocode().set( unlocode );
- location.instance().name().set( locationStr );
- return location.newInstance();
- }
-
- private Voyage voyage( String voyageNumberStr, Schedule schedule )
- {
- UnitOfWork uow = module.unitOfWorkFactory().currentUnitOfWork();
- EntityBuilder<Voyage> voyage = uow.newEntityBuilder( Voyage.class, voyageNumberStr );
-
- // VoyageNumber
- ValueBuilder<VoyageNumber> voyageNumber = module.newValueBuilder( VoyageNumber.class );
- voyageNumber.prototype().number().set( voyageNumberStr );
- voyage.instance().voyageNumber().set( voyageNumber.newInstance() );
-
- // Schedule
- voyage.instance().schedule().set( schedule );
- return voyage.newInstance();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/SampleDataService.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/SampleDataService.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/SampleDataService.java
deleted file mode 100644
index 98fcdd8..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/bootstrap/sampledata/SampleDataService.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.bootstrap.sampledata;
-
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.UUID;
-import org.apache.zest.api.activation.ActivatorAdapter;
-import org.apache.zest.api.activation.Activators;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.service.ServiceComposite;
-import org.apache.zest.api.service.ServiceReference;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.usecase.Usecase;
-import org.apache.zest.api.usecase.UsecaseBuilder;
-import org.apache.zest.sample.dcicargo.sample_a.context.shipping.booking.BookNewCargo;
-import org.apache.zest.sample.dcicargo.sample_a.context.shipping.handling.RegisterHandlingEvent;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargos;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.ExpectedHandlingEvent;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEventType;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Itinerary;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.zest.api.usecase.UsecaseBuilder.newUsecase;
-import static org.apache.zest.sample.dcicargo.sample_a.infrastructure.dci.Context.prepareContextBaseClass;
-
-/**
- * Create sample Cargos in different delivery stages
- */
-@Mixins( SampleDataService.Mixin.class )
-@Activators( SampleDataService.Activator.class )
-public interface SampleDataService
- extends ServiceComposite
-{
-
- void insertSampleData()
- throws Exception;
-
- class Activator extends ActivatorAdapter<ServiceReference<SampleDataService>>
- {
-
- @Override
- public void afterActivation( ServiceReference<SampleDataService> activated )
- throws Exception
- {
- activated.get().insertSampleData();
- }
-
- }
-
- abstract class Mixin
- implements SampleDataService
- {
- @Structure
- QueryBuilderFactory qbf;
-
- @Structure
- UnitOfWorkFactory uowf;
-
- @Service // We depend on BaseData to be inserted
- BaseDataService baseDataService;
-
- private static final Logger logger = LoggerFactory.getLogger( SampleDataService.class );
-
- @Override
- public void insertSampleData()
- throws Exception
- {
- prepareContextBaseClass( uowf );
-
- logger.info( "###### CREATING SAMPLE DATA... ##########################################" );
-
- // Create cargos
- populateRandomCargos( 15 );
-
- // Handle cargos
- UnitOfWork uow = uowf.newUnitOfWork( newUsecase( "### Create sample data" ) );
- try
- {
- int i = 11; // starting at 11 for sortable tracking id prefix in lists
- QueryBuilder<Cargo> qb = qbf.newQueryBuilder( Cargo.class );
- for( Cargo cargo : uow.newQuery( qb ) )
- {
- String trackingId = cargo.trackingId().get().id().get();
- ExpectedHandlingEvent nextEvent;
- LocalDate date;
- String port;
- String voyage;
- HandlingEventType type;
-
- // BOOK cargo with no handling (i == 11)
-
- // ROUTE
- if( i > 11 )
- {
- Itinerary itinerary = new BookNewCargo( cargo ).routeCandidates().get( 0 );
- new BookNewCargo( cargo, itinerary ).assignCargoToRoute();
- }
-
- // RECEIVE
- if( i > 12 )
- {
- nextEvent = cargo.delivery().get().nextExpectedHandlingEvent().get();
- port = nextEvent.location().get().getCode();
- LocalDate mockTime = LocalDate.now();
- new RegisterHandlingEvent( mockTime, mockTime, trackingId, "RECEIVE", port, null ).register();
- }
-
- // LOAD
- if( i > 13 )
- {
- nextEvent = cargo.delivery().get().nextExpectedHandlingEvent().get();
- date = nextEvent.date().get();
- port = nextEvent.location().get().getCode();
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- new RegisterHandlingEvent( date, date, trackingId, "LOAD", port, voyage ).register();
- }
-
- // UNLOAD
- if( i > 14 )
- {
- nextEvent = cargo.delivery().get().nextExpectedHandlingEvent().get();
- date = nextEvent.date().get();
- port = nextEvent.location().get().getCode();
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- new RegisterHandlingEvent( date, date, trackingId, "UNLOAD", port, voyage ).register();
- }
-
- // Cargo is now in port
- nextEvent = cargo.delivery().get().nextExpectedHandlingEvent().get();
- date = nextEvent.date().get();
- port = nextEvent.location().get().getCode();
- type = nextEvent.handlingEventType().get();
-
- // MISDIRECTED: Unexpected customs handling before reaching destination
- if( i == 16 )
- {
- new RegisterHandlingEvent( date, date, trackingId, "CUSTOMS", port, null ).register();
- }
-
- // MISDIRECTED: Unexpected claim before reaching destination
- if( i == 17 )
- {
- new RegisterHandlingEvent( date, date, trackingId, "CLAIM", port, null ).register();
- }
-
- // MISDIRECTED: LOAD in wrong port
- if( i == 18 )
- {
- String wrongPort = port.equals( "USDAL" ) ? "USCHI" : "USDAL";
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- new RegisterHandlingEvent( date, date, trackingId, "LOAD", wrongPort, voyage ).register();
- }
-
- // MISDIRECTED: LOAD onto wrong carrier
- if( i == 19 )
- {
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- String wrongVoyage = voyage.equals( "V100S" ) ? "V200T" : "V100S";
- new RegisterHandlingEvent( date, date, trackingId, "LOAD", port, wrongVoyage ).register();
- }
-
- // MISDIRECTED: LOAD onto wrong carrier in wrong port
- if( i == 20 )
- {
- String wrongPort = port.equals( "USDAL" ) ? "USCHI" : "USDAL";
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- String wrongVoyage = voyage.equals( "V100S" ) ? "V200T" : "V100S";
- new RegisterHandlingEvent( date, date, trackingId, "LOAD", wrongPort, wrongVoyage ).register();
- }
-
- // MISDIRECTED: UNLOAD in wrong port
- if( i == 21 )
- {
- String wrongPort = port.equals( "USDAL" ) ? "USCHI" : "USDAL";
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- new RegisterHandlingEvent( date, date, trackingId, "UNLOAD", wrongPort, voyage ).register();
- }
-
- // MISDIRECTED: UNLOAD from wrong carrier
- if( i == 22 )
- {
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- String wrongVoyage = voyage.equals( "V100S" ) ? "V200T" : "V100S";
- new RegisterHandlingEvent( date, date, trackingId, "UNLOAD", port, wrongVoyage ).register();
- }
-
- // MISDIRECTED: UNLOAD from wrong carrier in wrong port
- if( i == 23 )
- {
- String wrongPort = port.equals( "USDAL" ) ? "USCHI" : "USDAL";
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- String wrongVoyage = voyage.equals( "V100S" ) ? "V200T" : "V100S";
- new RegisterHandlingEvent( date, date, trackingId, "UNLOAD", wrongPort, wrongVoyage ).register();
- }
-
- // Complete all LOAD/UNLOADS
- if( i > 23 )
- {
- do
- {
- voyage = nextEvent.voyage().get().voyageNumber().get().number().get();
- new RegisterHandlingEvent( date, date, trackingId, type.name(), port, voyage ).register();
-
- nextEvent = cargo.delivery().get().nextExpectedHandlingEvent().get();
- date = nextEvent.date().get();
- port = nextEvent.location().get().getCode();
- type = nextEvent.handlingEventType().get();
- }
- while( type != HandlingEventType.CLAIM );
- }
-
- // CLAIM at destination - this ends the life cycle of the cargo delivery
- if( i == 25 )
- {
- new RegisterHandlingEvent( date, date, trackingId, "CLAIM", port, null ).register();
- }
-
- // Add more cases if needed...
-
- i++;
- }
-
- uow.complete();
- }
- catch( Exception e )
- {
- uow.discard();
- logger.error( "Problem handling cargos: " + e.getMessage() );
- throw e;
- }
-
- logger.info( "###### SAMPLE DATA CREATED ##############################################" );
- }
-
- private void populateRandomCargos( int numberOfCargos )
- {
- Usecase usecase = UsecaseBuilder.newUsecase( "### Populate Random Cargos ###" );
- UnitOfWork uow = uowf.newUnitOfWork( usecase );
-
- Cargos cargos = uow.get( Cargos.class, Cargos.CARGOS_ID );
-
- QueryBuilder<Location> qb = qbf.newQueryBuilder( Location.class );
- Query<Location> allLocations = uow.newQuery( qb );
- int locationSize = (int) allLocations.count();
-
- // Make array for selection of location with random index
- final List<Location> locationList = new ArrayList<>();
- for( Location location : allLocations )
- {
- locationList.add( location );
- }
-
- Location origin;
- Location destination;
- Random random = new Random();
- LocalDate deadline;
- String uuid;
- String id;
- try
- {
- for( int i = 0; i < numberOfCargos; i++ )
- {
- origin = locationList.get( random.nextInt( locationSize ) );
-
- // Find destination different from origin
- do
- {
- destination = locationList.get( random.nextInt( locationSize ) );
- }
- while( destination.equals( origin ) );
-
- deadline = LocalDate.now().plusDays( 15 + random.nextInt( 10 ) );
-
- // Build sortable random tracking ids
- uuid = UUID.randomUUID().toString().toUpperCase();
- id = ( i + 11 ) + "-" + uuid.substring( 0, uuid.indexOf( "-" ) );
-
- new BookNewCargo( cargos, origin, destination, deadline ).createCargo( id );
- }
- uow.complete();
- }
- catch( Exception e )
- {
- uow.discard();
- logger.error( "Problem booking a new cargo: " + e.getMessage() );
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/BookingQueries.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/BookingQueries.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/BookingQueries.java
deleted file mode 100644
index 6d3b660..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/BookingQueries.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.query;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.wicket.model.IModel;
-import org.apache.zest.api.composite.TransientComposite;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.sample.dcicargo.sample_a.context.support.FoundNoRoutesException;
-import org.apache.zest.sample.dcicargo.sample_a.context.support.RoutingService;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Itinerary;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.JSONModel;
-
-/**
- * Booking queries
- *
- * This is in a Zest composite since we can then conveniently get the routing service injected.
- * We could choose to implement all query classes like this too.
- *
- * Used by the communication layer only. Can change according to ui needs.
- */
-@Mixins( BookingQueries.Mixin.class )
-public interface BookingQueries
- extends TransientComposite
-{
- List<IModel<Itinerary>> routeCandidates( String trackingIdString )
- throws FoundNoRoutesException;
-
- abstract class Mixin
- implements BookingQueries
- {
- @Structure
- UnitOfWorkFactory uowf;
-
- @Service
- RoutingService routingService;
-
- public List<IModel<Itinerary>> routeCandidates( final String trackingIdString )
- throws FoundNoRoutesException
- {
- Cargo cargo = uowf.currentUnitOfWork().get( Cargo.class, trackingIdString );
- List<Itinerary> routes = routingService.fetchRoutesForSpecification( cargo.routeSpecification().get() );
-
- List<IModel<Itinerary>> modelList = new ArrayList<IModel<Itinerary>>();
- for( Itinerary itinerary : routes )
- {
- modelList.add( JSONModel.of( itinerary ) );
- }
- return modelList;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/CommonQueries.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/CommonQueries.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/CommonQueries.java
deleted file mode 100644
index 94ed7ce..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/CommonQueries.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.query;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.wicket.model.IModel;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.EntityModel;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.Queries;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.QueryModel;
-
-import static org.apache.zest.api.query.QueryExpressions.orderBy;
-import static org.apache.zest.api.query.QueryExpressions.templateFor;
-
-/**
- * Common queries
- *
- * Queries shared across packages.
- *
- * Used by the communication layer only. Can change according to ui needs.
- */
-public class CommonQueries extends Queries
-{
- public IModel<Cargo> cargo( String trackingId )
- {
- return EntityModel.of( Cargo.class, trackingId, Cargo.class );
- }
-
- public IModel<List<Cargo>> cargoList()
- {
- return new QueryModel<Cargo>( Cargo.class )
- {
- public Query<Cargo> getQuery()
- {
- QueryBuilder<Cargo> qb = qbf.newQueryBuilder( Cargo.class );
- return uowf.currentUnitOfWork().newQuery( qb )
- .orderBy( orderBy( templateFor( Cargo.class ).trackingId().get().id() ) );
- }
- };
- }
-
- public List<String> unLocodes()
- {
- QueryBuilder<Location> qb = qbf.newQueryBuilder( Location.class );
- Query<Location> locations = uowf.currentUnitOfWork().newQuery( qb )
- .orderBy( orderBy( templateFor( Location.class ).unLocode().get().code() ) );
- List<String> unLocodeList = new ArrayList<String>();
- for( Location location : locations )
- {
- unLocodeList.add( location.getCode() );
- }
-
- return unLocodeList;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/HandlingQueries.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/HandlingQueries.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/HandlingQueries.java
deleted file mode 100644
index 9e61655..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/HandlingQueries.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.query;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEventType;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.Queries;
-
-import static org.apache.zest.api.query.QueryExpressions.orderBy;
-import static org.apache.zest.api.query.QueryExpressions.templateFor;
-
-/**
- * Handling queries
- *
- * Used by the communication layer only. Can change according to ui needs.
- */
-public class HandlingQueries extends Queries
-{
- public List<String> voyages()
- {
- QueryBuilder<Voyage> qb = qbf.newQueryBuilder( Voyage.class );
- Query<Voyage> voyages = uowf.currentUnitOfWork().newQuery( qb )
- .orderBy( orderBy( templateFor( Voyage.class ).voyageNumber() ) );
-
- List<String> voyageList = new ArrayList<String>();
- for( Voyage voyage : voyages )
- {
- voyageList.add( voyage.voyageNumber().get().number().get() );
- }
- return voyageList;
- }
-
- public List<String> cargoIds()
- {
- QueryBuilder<Cargo> qb = qbf.newQueryBuilder( Cargo.class );
- Query<Cargo> cargos = uowf.currentUnitOfWork().newQuery( qb )
- .orderBy( orderBy( templateFor( Cargo.class ).trackingId().get().id() ) );
- List<String> cargoList = new ArrayList<>();
- for( Cargo cargo : cargos )
- {
- cargoList.add( cargo.trackingId().get().id().get() );
- }
- return cargoList;
- }
-
- public List<String> eventTypes()
- {
- List<String> eventTypes = new ArrayList<>();
- for( HandlingEventType eventType : HandlingEventType.values() )
- {
- eventTypes.add( eventType.name() );
- }
- return eventTypes;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/TrackingQueries.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/TrackingQueries.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/TrackingQueries.java
deleted file mode 100644
index f7d2e49..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/query/TrackingQueries.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.query;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.wicket.model.IModel;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.query.QueryBuilder;
-import org.apache.zest.api.query.QueryExpressions;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEvent;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.Queries;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.QueryModel;
-
-import static org.apache.zest.api.query.QueryExpressions.*;
-
-/**
- * Tracking queries
- *
- * Used by the communication layer only. Can change according to ui needs.
- */
-public class TrackingQueries extends Queries
-{
- public List<String> routedCargos()
- {
- Cargo cargoEntity = templateFor( Cargo.class );
-
- QueryBuilder<Cargo> qb = qbf.newQueryBuilder( Cargo.class )
- .where( isNotNull( cargoEntity.itinerary() ) );
- Query<Cargo> cargos = uowf.currentUnitOfWork().newQuery( qb )
- .orderBy( orderBy( cargoEntity.trackingId().get().id() ) );
-
- List<String> cargoList = new ArrayList<String>();
- for( Cargo cargo : cargos )
- {
- cargoList.add( cargo.trackingId().get().id().get() );
- }
-
- return cargoList;
- }
-
- public IModel<List<HandlingEvent>> events( final String trackingIdString )
- {
- return new QueryModel<HandlingEvent>( HandlingEvent.class )
- {
- public Query<HandlingEvent> getQuery()
- {
- HandlingEvent eventTemplate = templateFor( HandlingEvent.class );
-
- QueryBuilder<HandlingEvent> qb = qbf.newQueryBuilder( HandlingEvent.class )
- .where( QueryExpressions.eq( eventTemplate.trackingId().get().id(), trackingIdString ) );
- return uowf
- .currentUnitOfWork()
- .newQuery( qb )
- .orderBy( orderBy( eventTemplate.completionDate() ) );
- }
- };
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/BasePage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/BasePage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/BasePage.java
deleted file mode 100644
index f9c9c16..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/BasePage.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.web;
-
-import com.google.code.joliratools.StatelessAjaxFallbackLink;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.WicketZestApplication;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.page.BaseWebPage;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.tabs.TabsPanel;
-
-/**
- * Base Wicket page of the DCI Sample application
- */
-public class BasePage extends BaseWebPage
-{
- private final Link toggleLinks;
- private static boolean showLInks = false;
- private Fragment links = new Fragment( "links", "linksFragment", this );
-
- public BasePage( String activeTab )
- {
- this( activeTab, null );
- }
-
- public BasePage( String activeTab, PageParameters pageParameters )
- {
- super( pageParameters );
-
- toggleLinks = new StatelessAjaxFallbackLink<Void>( "toggleLinks" )
- {
- @Override
- public void onClick( AjaxRequestTarget target )
- {
- // Open/close triangle of this toggle link
- add( new AttributeModifier( "class", Model.of( showLInks ? "closed" : "open" ) ) );
-
- // Show/hide links
- links.setVisible( showLInks = !showLInks );
-
- // Update with ajax if browser allows
- if( target != null )
- {
- target.add( links, toggleLinks );
- }
- }
- };
- add( toggleLinks );
- add( links.setOutputMarkupPlaceholderTag( true ).setVisible( false ) );
-
- add( new Label( "version", ( (WicketZestApplication) getApplication() ).appVersion() ) );
-
- add( new TabsPanel( activeTab ) );
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookNewCargoPage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookNewCargoPage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookNewCargoPage.java
deleted file mode 100644
index 20cc050..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookNewCargoPage.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.web.booking;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-import org.apache.wicket.Session;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.zest.sample.dcicargo.sample_a.communication.query.CommonQueries;
-import org.apache.zest.sample.dcicargo.sample_a.context.shipping.booking.BookNewCargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.TrackingId;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form.AbstractForm;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form.DateTextFieldWithPicker;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form.SelectorInForm;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.prevnext.PrevNext;
-
-/**
- * Book new cargo
- *
- * An example of UI validation:
- * - you can't choose equal locations
- * - earliest deadline you can choose from the date picker is tomorrow (we could set any date that the domain wants).
- *
- * More elaborate validation rules could be enforced in a real domain to avoid even touching
- * the backend with invalid data (of course we would still need backend validation).
- */
-public class BookNewCargoPage extends BookingBasePage
-{
- public BookNewCargoPage()
- {
- add( new BookNewCargoForm() );
- setVersioned( false );
- }
-
- private final class BookNewCargoForm extends AbstractForm<Void>
- {
- // Set by Wicket property resolvers:
- private String origin, destination;
- private LocalDate deadline;
-
- public BookNewCargoForm()
- {
- List<String> locations = new CommonQueries().unLocodes();
-
- final FeedbackPanel feedback = new FeedbackPanel( "feedback" );
- add( feedback.setOutputMarkupId( true ) );
-
- final SelectorInForm originSelector = new SelectorInForm(
- "origin", "Origin", locations, this, "destination" );
- originSelector.setRequired( true );
-
- final ComponentFeedbackPanel originFeedback = new ComponentFeedbackPanel(
- "originFeedback", originSelector );
- add( originFeedback.setOutputMarkupId( true ) );
-
- final SelectorInForm destinationSelector = new SelectorInForm(
- "destination", "Destinatin", locations, this, "origin" );
- destinationSelector.setRequired( true );
-
- final ComponentFeedbackPanel destinationFeedback = new ComponentFeedbackPanel(
- "destinationFeedback", destinationSelector );
- add( destinationFeedback.setOutputMarkupId( true ) );
-
- // Disable equal locations
- originSelector.add( new AjaxFormComponentUpdatingBehavior( "onchange" )
- {
- @Override
- protected void onUpdate( AjaxRequestTarget target )
- {
- // Exclude origin in destination drop down
- target.add( originSelector, originFeedback, destinationSelector );
- focusFirstError( target );
- }
- } );
-
- destinationSelector.add( new AjaxFormComponentUpdatingBehavior( "onchange" )
- {
- @Override
- protected void onUpdate( AjaxRequestTarget target )
- {
- // Exclude destination in origin drop down
- target.add( destinationSelector, destinationFeedback, originSelector );
- focusFirstError( target );
- }
- } );
-
- // Deadline
- final DateTextFieldWithPicker deadlineField = new DateTextFieldWithPicker( "deadline", "Arrival deadline", this );
- deadlineField.earliestDate( LocalDate.now().plusDays( 1 ) );
-
- final ComponentFeedbackPanel deadlineFeedback = new ComponentFeedbackPanel(
- "deadlineFeedback", deadlineField );
- add( deadlineFeedback.setOutputMarkupId( true ) );
-
- add( originSelector, destinationSelector, deadlineField );
-
- add( new AjaxFallbackButton( "book", this )
- {
- @Override
- protected void onSubmit( AjaxRequestTarget target, Form<?> form )
- {
- try
- {
- // Perform use case
- TrackingId trackingId = new BookNewCargo( origin, destination, deadline ).book();
-
- // Add new tracking id to list in session
- PrevNext.addId( Session.get(), trackingId.id().get() );
-
- // Show created cargo
- setResponsePage( CargoDetailsPage.class, new PageParameters().set( 0, trackingId.id().get() ) );
- }
- catch( Exception e )
- {
- logger.warn( "Problem booking a new cargo: " + e.getMessage() );
- feedback.error( e.getMessage() );
- target.add( feedback );
- }
- }
-
- @Override
- protected void onError( final AjaxRequestTarget target, Form<?> form )
- {
- target.add( originFeedback, destinationFeedback, deadlineFeedback );
- focusFirstError( target );
- }
- } );
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookingBasePage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookingBasePage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookingBasePage.java
deleted file mode 100644
index d91128b..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/BookingBasePage.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.web.booking;
-
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.zest.sample.dcicargo.sample_a.communication.web.BasePage;
-
-/**
- * Booking base page - to control the selected tab
- */
-public class BookingBasePage extends BasePage
-{
- public BookingBasePage()
- {
- super( "booking" );
- }
-
- public BookingBasePage( PageParameters pageParameters )
- {
- super( "booking", pageParameters );
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoDetailsPage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoDetailsPage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoDetailsPage.java
deleted file mode 100644
index d1a36f1..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoDetailsPage.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.web.booking;
-
-import java.util.List;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.devutils.stateless.StatelessComponent;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.basic.MultiLineLabel;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.zest.sample.dcicargo.sample_a.communication.query.CommonQueries;
-import org.apache.zest.sample.dcicargo.sample_a.communication.web.tracking.HandlingHistoryPanel;
-import org.apache.zest.sample.dcicargo.sample_a.communication.web.tracking.NextHandlingEventPanel;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.RouteSpecification;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.Delivery;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.RoutingStatus;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary.Leg;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.color.CorrectColor;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.color.ErrorColor;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.link.LinkPanel;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.prevnext.PrevNext;
-
-import static java.time.ZoneOffset.UTC;
-import static java.util.Date.from;
-
-/**
- * Cargo details - an overview of all data available about a cargo.
- */
-@StatelessComponent
-public class CargoDetailsPage extends BookingBasePage
-{
- public CargoDetailsPage( PageParameters parameters )
- {
- this( parameters.get( 0 ).toString() );
- }
-
- public CargoDetailsPage( String trackingId )
- {
- super( new PageParameters().set( 0, trackingId ) );
-
- IModel<Cargo> cargoModel = new CommonQueries().cargo( trackingId );
- Cargo cargo = cargoModel.getObject();
- Delivery delivery = cargo.delivery().get();
- RouteSpecification routeSpecification = cargo.routeSpecification().get();
- final RoutingStatus routingStatus = delivery.routingStatus().get();
- Boolean isMisrouted = routingStatus == RoutingStatus.MISROUTED;
-
- add( new PrevNext( "prevNext", CargoDetailsPage.class, trackingId ) );
-
- add( new Label( "trackingId", trackingId ) );
- add( new Label( "origin", cargo.origin().get().getString() ) );
- add( new Label( "destination", routeSpecification.destination()
- .get()
- .getString() ).add( new CorrectColor( isMisrouted ) ) );
- add( new Label( "deadline", Model.of( routeSpecification.arrivalDeadline().get() ) ) );
- add( new Label( "routingStatus", routingStatus.toString() ).add( new ErrorColor( isMisrouted ) ) );
- add( new LinkPanel( "changeDestination", ChangeDestinationPage.class, trackingId, "Change destination" ) );
-
- if( routingStatus == RoutingStatus.NOT_ROUTED )
- {
- add( new LinkPanel( "routingAction", RouteCargoPage.class, trackingId, "Route" ) );
- add( new Label( "delivery" ) );
- add( new Label( "itinerary" ) );
- }
- else if( routingStatus == RoutingStatus.ROUTED )
- {
- add( new LinkPanel( "routingAction", RouteCargoPage.class, trackingId, "Re-route" ) );
- add( new DeliveryFragment( delivery ) );
- add( new ItineraryFragment( cargoModel, routingStatus ) );
- }
- else if( routingStatus == RoutingStatus.MISROUTED )
- {
- add( new LinkPanel( "routingAction", RouteCargoPage.class, trackingId, "Re-route" ) );
- add( new DeliveryFragment( delivery ) );
- add( new ItineraryFragment( cargoModel, routingStatus ) );
- }
- else
- {
- throw new RuntimeException( "Unknown routing status." );
- }
-
- if( delivery.lastHandlingEvent().get() == null )
- {
- add( new Label( "handlingHistoryPanel" ) );
- }
- else
- {
- add( new HandlingHistoryPanel( "handlingHistoryPanel", cargoModel, trackingId ) );
- }
-
- add( new NextHandlingEventPanel( "nextHandlingEventPanel", cargoModel ) );
- }
-//
-// @Override
-// public boolean isVersioned()
-// {
-// return false;
-// }
-
- private class ItineraryFragment extends Fragment
- {
- public ItineraryFragment( final IModel<Cargo> cargoModel, final RoutingStatus routingStatus )
- {
- super( "itinerary", "itineraryFragment", CargoDetailsPage.this );
-
- IModel<List<Leg>> legListModel = new LoadableDetachableModel<List<Leg>>()
- {
- @Override
- protected List<Leg> load()
- {
- return cargoModel.getObject().itinerary().get().legs().get();
- }
- };
-
- add( new ListView<Leg>( "legs", legListModel )
- {
- @Override
- protected void populateItem( ListItem<Leg> item )
- {
- Leg leg = item.getModelObject();
-
- item.add( new Label( "loadLocation", leg.loadLocation().get().getCode() ) );
- item.add( new Label( "loadDate", new Model<>( from( leg.loadDate().get().atStartOfDay().toInstant( UTC ) ) ) ) );
- item.add( new Label( "voyage", leg.voyage().get().voyageNumber().get().number().get() ) );
-
- Boolean isMisrouted = routingStatus == RoutingStatus.MISROUTED && item.getIndex() == ( getList().size() - 1 );
- item.add( new Label( "unloadLocation",
- leg.unloadLocation().get().getCode() ).add( new ErrorColor( isMisrouted ) ) );
-
- item.add( new Label( "unloadDate",
- new Model<>( from( leg.unloadDate().get().atStartOfDay().toInstant( UTC ) ) ) ) );
- }
- } );
- }
- }
-
- private class DeliveryFragment extends Fragment
- {
- public DeliveryFragment( Delivery delivery )
- {
- super( "delivery", "deliveryFragment", CargoDetailsPage.this );
-
- add( new Label( "transportStatus", delivery.transportStatus().get().toString() ) );
-
- if( delivery.isMisdirected().get() )
- {
- String msg = "Cargo is misdirected. \nPlease reroute cargo.";
- add( new MultiLineLabel( "deliveryStatus", msg ).add( new AttributeModifier( "class", "errorColor" ) ) );
- }
- else
- {
- add( new Label( "deliveryStatus", "On track" ) );
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoListPage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoListPage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoListPage.java
deleted file mode 100644
index 25bc21e..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/communication/web/booking/CargoListPage.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.zest.sample.dcicargo.sample_a.communication.web.booking;
-
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.wicket.Session;
-import org.apache.wicket.devutils.stateless.StatelessComponent;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.zest.sample.dcicargo.sample_a.communication.query.CommonQueries;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.Cargo;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.RouteSpecification;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.Delivery;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.delivery.RoutingStatus;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling.HandlingEventType;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.color.ErrorColor;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.link.LinkPanel;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.prevnext.PrevNext;
-
-import static java.util.Date.from;
-
-/**
- * List of Cargos
- */
-@StatelessComponent
-public class CargoListPage extends BookingBasePage
-{
- public CargoListPage()
- {
- IModel<List<Cargo>> cargoList = new CommonQueries().cargoList();
-
- // Save current trackingIds in session (for prev/next buttons on details page)
- ArrayList<String> ids = new ArrayList<>();
- for( Cargo cargo : cargoList.getObject() )
- {
- ids.add( cargo.trackingId().get().id().get() );
- }
- PrevNext.registerIds( Session.get(), ids );
-
- add( new ListView<Cargo>( "list", cargoList )
- {
- @Override
- protected void populateItem( ListItem<Cargo> item )
- {
- Cargo cargo = item.getModelObject();
- String trackingId = cargo.trackingId().get().id().get();
- Delivery delivery = cargo.delivery().get();
- RoutingStatus routingStatus = cargo.delivery().get().routingStatus().get();
-
- item.add( new LinkPanel( "trackingId", CargoDetailsPage.class, trackingId ) );
-
- item.add( new Label( "origin", cargo.origin().get().getCode() ) );
-
- RouteSpecification routeSpecification = cargo.routeSpecification().get();
- item.add( new Label( "destination", routeSpecification.destination().get().getCode() ) );
-
- LocalDateTime deadlineTime = routeSpecification.arrivalDeadline().get().atStartOfDay().plusDays( 1 );
- item.add( new Label( "deadline", new Model<>( from( deadlineTime.toInstant( ZoneOffset.UTC ) ) ) ) );
-
- item.add( new Label( "routingStatus", routingStatus.toString() ).add( new ErrorColor( routingStatus == RoutingStatus.MISROUTED ) ) );
-
- Boolean inCustoms = delivery.lastHandlingEvent().get() != null
- && delivery.lastHandlingEvent()
- .get()
- .handlingEventType()
- .get() == HandlingEventType.CUSTOMS;
- String customsLabel = delivery.transportStatus().get().name() + ( inCustoms ? " (CUSTOMS)" : "" );
- item.add( new Label( "transportStatus", customsLabel ) );
-
- IModel directed = new Model<>( delivery.isMisdirected().get() ? "Misdirected" : "On track" );
- item.add( new Label( "deliveryStatus", directed ).add( new ErrorColor( delivery.isMisdirected()
- .get() ) ) );
- }
- } );
- }
-}
\ No newline at end of file