blob: 085f389540e921a3d93712e715122eb236b3f372 [file] [log] [blame]
/*
* Copyright (c) 2009, Tony Kohar. All Rights Reserved.
*
* 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 org.apache.zest.envisage.sample;
import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.zest.api.entity.EntityBuilder;
import org.apache.zest.api.entity.EntityComposite;
import org.apache.zest.api.property.Property;
import org.apache.zest.api.unitofwork.UnitOfWork;
import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException;
import org.apache.zest.bootstrap.AssemblyException;
import org.apache.zest.bootstrap.ModuleAssembly;
import org.apache.zest.envisage.Envisage;
import org.apache.zest.index.rdf.assembly.RdfMemoryStoreAssembler;
import org.apache.zest.test.AbstractQi4jTest;
import org.apache.zest.test.EntityTestAssembler;
import static org.apache.zest.test.util.Assume.assumeDisplayPresent;
public class EnvisageSample
extends AbstractQi4jTest
{
public static void main( String[] args )
throws Exception
{
EnvisageSample sample = new EnvisageSample();
sample.runSample();
}
@BeforeClass
public static void assumeDisplay()
{
assumeDisplayPresent();
}
@Test
public void runSample()
throws Exception
{
setUp();
createTestData();
//createTestData2();
//createTestData3();
new Envisage().run( applicationModel );
// Thread.sleep( 1113000 );
}
@Override
public void assemble( ModuleAssembly module )
throws AssemblyException
{
module.entities( CarEntity.class );
module.entities( AnimalEntity.class );
new RdfMemoryStoreAssembler().assemble( module );
new EntityTestAssembler().assemble( module );
}
public void createTestData()
{
UnitOfWork uow = module.newUnitOfWork();
try
{
createCar( "Volvo", "S80", 2007 );
createCar( "Volvo", "C70", 2006 );
createCar( "Ford", "Transit", 2007 );
createCar( "Ford", "Mustang", 2007 );
createCar( "Ford", "Mustang", 2006 );
createCar( "Ford", "Mustang", 2005 );
createAnimal( "Cat", "Miaow" );
createAnimal( "Duck", "Kwek Kwek" );
createAnimal( "Dog", "Guk Guk" );
createAnimal( "Cow", "Moooo" );
uow.complete();
}
catch( UnitOfWorkCompletionException e )
{
// Can not happen.
e.printStackTrace();
}
}
private String createCar( String manufacturer, String model, int year )
{
UnitOfWork uow = module.currentUnitOfWork();
EntityBuilder<Car> builder = uow.newEntityBuilder( Car.class );
Car prototype = builder.instanceFor( CarEntity.class );
prototype.manufacturer().set( manufacturer );
prototype.model().set( model );
prototype.year().set( year );
CarEntity entity = (CarEntity) builder.newInstance();
return entity.identity().get();
}
private String createAnimal( String name, String sound )
{
UnitOfWork uow = module.currentUnitOfWork();
EntityBuilder<Animal> builder = uow.newEntityBuilder( Animal.class );
Animal prototype = builder.instanceFor( AnimalEntity.class );
prototype.name().set( name );
prototype.sound().set( sound );
AnimalEntity entity = (AnimalEntity) builder.newInstance();
return entity.identity().get();
}
public interface Car
{
Property<String> manufacturer();
Property<String> model();
Property<Integer> year();
}
public interface CarEntity
extends Car, EntityComposite
{
}
public interface Animal
{
Property<String> name();
Property<String> sound();
}
public interface AnimalEntity
extends Animal, EntityComposite
{
}
}