blob: e765eb0da7db47c44c03688bb6565c067b43dcd1 [file] [log] [blame]
/*
* Copyright 2008 Alin Dreghiciu.
* Copyright 2014 Paul Merlin.
*
* 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.test.indexing;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import org.apache.zest.api.entity.EntityBuilder;
import org.apache.zest.api.structure.Module;
import org.apache.zest.api.unitofwork.UnitOfWork;
import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException;
import org.apache.zest.api.value.ValueBuilder;
import org.apache.zest.test.indexing.model.Account;
import org.apache.zest.test.indexing.model.Address;
import org.apache.zest.test.indexing.model.Cat;
import org.apache.zest.test.indexing.model.City;
import org.apache.zest.test.indexing.model.Domain;
import org.apache.zest.test.indexing.model.Female;
import org.apache.zest.test.indexing.model.Male;
import org.apache.zest.test.indexing.model.Person;
import org.apache.zest.test.indexing.model.Protocol;
import org.apache.zest.test.indexing.model.QueryParam;
import org.apache.zest.test.indexing.model.URL;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import static org.joda.time.DateTimeZone.UTC;
/**
* Utility class to populate Index/Query tests data.
*/
public class TestData
{
public static void populate( Module module )
throws UnitOfWorkCompletionException
{
try (UnitOfWork unitOfWork = module.unitOfWorkFactory().newUnitOfWork())
{
NameableAssert.clear();
Domain gaming;
{
EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class, "Gaming" );
gaming = domainBuilder.instance();
gaming.name().set( "Gaming" );
gaming.description().set( "Gaming domain" );
gaming = domainBuilder.newInstance();
NameableAssert.trace( gaming );
}
Domain programming;
{
EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class );
programming = domainBuilder.instance();
programming.name().set( "Programming" );
programming.description().set( "Programing domain" );
programming = domainBuilder.newInstance();
NameableAssert.trace( programming );
}
Domain cooking;
{
EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class );
cooking = domainBuilder.instance();
cooking.name().set( "Cooking" );
cooking.description().set( "Cooking domain" );
cooking = domainBuilder.newInstance();
NameableAssert.trace( cooking );
}
Domain cars;
{
EntityBuilder<Domain> domainBuilder = unitOfWork.newEntityBuilder( Domain.class );
cars = domainBuilder.instance();
cars.name().set( "Cars" );
cars.description().set( "Cars" );
cars = domainBuilder.newInstance();
NameableAssert.trace( cars );
}
City kualaLumpur;
{
EntityBuilder<City> cityBuilder = unitOfWork.newEntityBuilder( City.class );
kualaLumpur = cityBuilder.instance();
kualaLumpur.name().set( "Kuala Lumpur" );
kualaLumpur.country().set( "Malaysia" );
kualaLumpur.county().set( "Some Jaya" );
kualaLumpur = cityBuilder.newInstance();
NameableAssert.trace( kualaLumpur );
}
City penang;
{
EntityBuilder<City> cityBuilder = unitOfWork.newEntityBuilder( City.class );
penang = cityBuilder.instance();
penang.name().set( "Penang" );
penang.country().set( "Malaysia" );
penang.county().set( "Some Other Jaya" );
penang = cityBuilder.newInstance();
NameableAssert.trace( penang );
}
Account annsAccount;
{
EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, "accountOfAnnDoe" );
annsAccount = accountBuilder.instance();
annsAccount.number().set( "accountOfAnnDoe" );
annsAccount = accountBuilder.newInstance();
}
Account jacksAccount;
{
EntityBuilder<Account> accountBuilder = unitOfWork.newEntityBuilder( Account.class, "accountOfJackDoe" );
jacksAccount = accountBuilder.instance();
jacksAccount.number().set( "accountOfJackDoe" );
jacksAccount = accountBuilder.newInstance();
}
ValueBuilder<Address> addressBuilder = module.newValueBuilder( Address.class );
Address address = addressBuilder.prototype();
address.line1().set( "Qi Street 4j" );
address.line2().set( "Off main Java Street" );
address.zipcode().set( "12345" );
Female annDoe;
{
EntityBuilder<Female> femaleBuilder = unitOfWork.newEntityBuilder( Female.class, "anndoe" );
annDoe = femaleBuilder.instance();
annDoe.name().set( "Ann Doe" );
annDoe.title().set( Person.Title.MRS );
annDoe.placeOfBirth().set( kualaLumpur );
annDoe.yearOfBirth().set( 1975 );
annDoe.interests().add( 0, cooking );
annDoe.password().set( "passwordOfAnnDoe" );
annDoe.mainAccount().set( annsAccount );
annDoe.accounts().put( "anns", annsAccount );
annDoe.accounts().put( "jacks", jacksAccount );
annDoe.address().set( addressBuilder.newInstance() );
annDoe = femaleBuilder.newInstance();
NameableAssert.trace( annDoe );
}
{
EntityBuilder<Male> maleBuilder = unitOfWork.newEntityBuilder( Male.class );
Male joeDoe = maleBuilder.instance();
joeDoe.name().set( "Joe Doe" );
joeDoe.title().set( Person.Title.MR );
joeDoe.placeOfBirth().set( kualaLumpur );
joeDoe.yearOfBirth().set( 1990 );
joeDoe.mother().set( annDoe );
joeDoe.interests().add( 0, programming );
joeDoe.interests().add( 0, gaming );
joeDoe.email().set( "joe@thedoes.net" );
joeDoe.password().set( "passwordOfJoeDoe" );
joeDoe = maleBuilder.newInstance();
address = module.newValueBuilderWithPrototype( address ).prototype();
address.line1().set( "Qi Alley 4j" );
joeDoe.address().set( address );
joeDoe.bigInteger().set( new BigInteger( "23232323232323232323232323" ) );
joeDoe.bigDecimal().set( new BigDecimal( "23.4276931348623157e+309" ) );
joeDoe.dateValue().set( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() );
joeDoe.dateTimeValue().set( new DateTime( "2020-03-04T13:24:35", UTC ) );
joeDoe.localDateTimeValue().set( new LocalDateTime( "2020-03-04T13:23:00" ) );
joeDoe.localDateValue().set( new LocalDate( "2020-03-04" ) );
NameableAssert.trace( joeDoe );
}
{
EntityBuilder<Male> maleBuilder = unitOfWork.newEntityBuilder( Male.class );
Male jackDoe = maleBuilder.instance();
jackDoe.name().set( "Jack Doe" );
jackDoe.title().set( Person.Title.DR );
jackDoe.placeOfBirth().set( penang );
jackDoe.yearOfBirth().set( 1970 );
jackDoe.interests().add( 0, cars );
jackDoe.wife().set( annDoe );
jackDoe.password().set( "passwordOfJohnDoe" );
jackDoe.mainAccount().set( jacksAccount );
jackDoe.accounts().put( "anns", annsAccount );
jackDoe.accounts().put( "jacks", jacksAccount );
address = module.newValueBuilderWithPrototype( address ).prototype();
address.line1().set( "Qi Avenue 4j" );
jackDoe.address().set( address );
jackDoe.bigInteger().set( new BigInteger( "42424242424242424242424242" ) );
jackDoe.bigDecimal().set( new BigDecimal( "42.2376931348623157e+309" ) );
jackDoe.dateValue().set( new DateTime( "2010-03-04T13:24:35", UTC ).toDate() );
jackDoe.dateTimeValue().set( new DateTime( "2010-03-04T13:24:35", UTC ) );
jackDoe.localDateTimeValue().set( new LocalDateTime( "2010-03-04T13:23:00" ) );
jackDoe.localDateValue().set( new LocalDate( "2010-03-04" ) );
ValueBuilder<URL> urlBuilder = module.newValueBuilder( URL.class );
ValueBuilder<Protocol> protocolBuilder = module.newValueBuilder( Protocol.class );
ValueBuilder<QueryParam> queryParamBuilder = module.newValueBuilder( QueryParam.class );
Protocol protocol = protocolBuilder.prototype();
protocol.value().set( "http" );
List<QueryParam> queryParams = new ArrayList<>( 2 );
QueryParam param = queryParamBuilder.prototype();
param.name().set( "user" );
param.value().set( "jackdoe" );
queryParams.add( queryParamBuilder.newInstance() );
queryParamBuilder = module.newValueBuilder( QueryParam.class );
param = queryParamBuilder.prototype();
param.name().set( "password" );
param.value().set( "somepassword" );
queryParams.add( queryParamBuilder.newInstance() );
URL url = urlBuilder.prototype();
url.protocol().set( protocolBuilder.newInstance() );
url.queryParams().set( queryParams );
jackDoe.personalWebsite().set( urlBuilder.newInstance() );
jackDoe = maleBuilder.newInstance();
NameableAssert.trace( jackDoe );
}
{
EntityBuilder<Cat> catBuilder = unitOfWork.newEntityBuilder( Cat.class );
Cat felix = catBuilder.instance();
felix.name().set( "Felix" );
catBuilder.newInstance();
NameableAssert.trace( felix );
}
unitOfWork.complete();
}
}
private TestData()
{
}
}