/*
* This code is distributed under The GNU Lesser General Public License (LGPLv3)
* Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html
*
* Copyright Denis Pavlov 2009
* Web: http://www.genericdtoassembler.org
* SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/
* SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/
*/
package com.inspiresoftware.lib.dto.geda.performance;
import com.inspiresoftware.lib.dto.geda.performance.entity.Level1Entity;
import com.inspiresoftware.lib.dto.geda.performance.entity.Level2Entity;
import com.inspiresoftware.lib.dto.geda.performance.entity.Level3Entity;
import org.junit.Ignore;
import java.util.ArrayList;
import java.util.List;
/**
* Service class to build large samples of DTO's and Entities to test GeDA under load and in
* multi-threading environment.
*
* @author DPavlov
*/
@Ignore
public class Sampler {
/**
* @param id start counter for ids
* @param count count of level 1 entities
* @param subCount count of level 2 entities
* @return spawn sample of {@link Level1Entity} entities
*/
public List<Level1Entity> getLevel1Entities(final int id, final int count, final int subCount) {
final List<Level1Entity> coll = new ArrayList<Level1Entity>();
for (int i = 0; i < count; i++) {
coll.add(getLevel1Entity(id + 10000000 * i, subCount));
}
return coll;
}
/**
* @param id id of this entity
* @param subCount count of sub entities in the collections
* @return level 1 entity
*/
public Level1Entity getLevel1Entity(final int id, final int subCount) {
return new Level1Entity(String.valueOf(id),
"field2" + id,
"field3" + id,
"field4" + id,
"field5" + id,
"field6" + id,
"field7" + id,
"field8" + id,
"field9" + id,
"field10" + id,
"field11" + id,
"field12" + id,
"field13" + id,
"field14" + id,
"field15" + id,
"field16" + id,
"field17" + id,
"field18" + id,
"field19" + id,
"field20" + id,
getLevel2Entities(id + 10000, subCount),
getLevel2Entities(id + 20000, subCount),
getLevel2Entities(id + 30000, subCount),
getLevel2Entities(id + 40000, subCount),
getLevel2Entities(id + 50000, subCount)
);
}
/**
* @param id initial id (100 + id)
* @param count number of entities to spawn
* @return spawn level 2 entities
*/
public List<Level2Entity> getLevel2Entities(final int id, final int count) {
final List<Level2Entity> coll = new ArrayList<Level2Entity>();
for (int i = 0; i < count; i++) {
coll.add(getLevel2Entity(id + 100 * i));
}
return coll;
}
/**
* @param id id of this entity
* @return level 2 entity
*/
public Level2Entity getLevel2Entity(final int id) {
return new Level2Entity(String.valueOf(id),
"field2" + id,
"field3" + id,
"field4" + id,
"field5" + id,
"field6" + id,
"field7" + id,
"field8" + id,
"field9" + id,
"field10" + id,
"field11" + id,
"field12" + id,
"field13" + id,
"field14" + id,
"field15" + id,
"field16" + id,
"field17" + id,
"field18" + id,
"field19" + id,
"field20" + id,
getLevel3Entity(id + 1),
getLevel3Entity(id + 2),
getLevel3Entity(id + 3),
getLevel3Entity(id + 4),
getLevel3Entity(id + 5)
);
}
/**
* @param count number of entities to spawn
* @return lis of level 3 entities
*/
public List<Level3Entity> getLevel3Entities(final int count) {
final List<Level3Entity> coll = new ArrayList<Level3Entity>();
for (int i = 0; i < count; i++) {
coll.add(getLevel3Entity(i));
}
return coll;
}
/**
* @param id id
* @return level 3 entity instance
*/
public Level3Entity getLevel3Entity(final int id) {
return new Level3Entity(String.valueOf(id),
"field2" + id,
"field3" + id,
"field4" + id,
"field5" + id,
"field6" + id,
"field7" + id,
"field8" + id,
"field9" + id,
"field10" + id,
"field11" + id,
"field12" + id,
"field13" + id,
"field14" + id,
"field15" + id,
"field16" + id,
"field17" + id,
"field18" + id,
"field19" + id,
"field20" + id
);
}
}