package in.partake.model.fixture.impl;
import in.partake.base.DateTime;
import in.partake.base.TimeUtil;
import in.partake.base.Util;
import in.partake.model.IPartakeDAOs;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.dao.access.IUserImageAccess;
import in.partake.model.dto.UserImage;
import in.partake.model.fixture.TestDataProvider;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* ImageData のテストデータを作成します。
* @author shinyak
*
*/
public class UserImageTestDataProvider extends TestDataProvider<UserImage> {
private final byte[] defaultImageContent;
public UserImageTestDataProvider() {
try {
InputStream is = getClass().getResourceAsStream("/images/null.png");
defaultImageContent = Util.getContentOfInputStream(is);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public byte[] getDefaultImageContent() {
return defaultImageContent;
}
@Override
public UserImage create(long pkNumber, String pkSalt, int objNumber) {
UUID uuid = new UUID(pkNumber, ("image" + pkSalt).toString().hashCode());
if (objNumber == 0) {
int N = 1024 * 1024;
byte[] data = new byte[N];
for (int i = 0; i < N; ++i) {
data[i] = (byte)(i % N);
}
return new UserImage(uuid.toString(), DEFAULT_USER_ID, "data/octet-stream", data, new DateTime(objNumber));
} else {
return new UserImage(uuid.toString(), DEFAULT_USER_ID, "data/octet-stream", new byte[] { 1, 2, (byte) objNumber }, new DateTime(objNumber));
}
}
@Override
public List<UserImage> createSamples() {
List<UserImage> array = new ArrayList<UserImage>();
array.add(new UserImage("id", "userId", "type", new byte[] { 0, 1, 2 } , new DateTime(0)));
array.add(new UserImage("id1", "userId", "type", new byte[] { 0, 1, 2 } , new DateTime(0)));
array.add(new UserImage("id", "userId1", "type", new byte[] { 0, 1, 2 } , new DateTime(0)));
array.add(new UserImage("id", "userId", "type1", new byte[] { 0, 1, 2 } , new DateTime(0)));
array.add(new UserImage("id", "userId", "type", new byte[] { 0, 1, 3 } , new DateTime(0)));
array.add(new UserImage("id", "userId", "type", new byte[] { 0, 1, 2 } , new DateTime(1)));
return array;
}
@Override
public void createFixtures(PartakeConnection con, IPartakeDAOs daos) throws DAOException {
IUserImageAccess dao = daos.getImageAccess();
dao.truncate(con);
// IMAGE_OWNED_BY_DEFAULT_USER_ID contains DEFAULT_IMAGE_ID.
dao.put(con, new UserImage(EVENT_FOREIMAGE_ID, EVENT_OWNER_ID, "byte/octet-stream", defaultImageContent, TimeUtil.getCurrentDateTime()));
dao.put(con, new UserImage(EVENT_BACKIMAGE_ID, EVENT_OWNER_ID, "byte/octet-stream", defaultImageContent, TimeUtil.getCurrentDateTime()));
dao.put(con, new UserImage(IMAGE_OWNER_IMAGE_ID, IMAGE_OWNER_ID, "byte/octet-stream", defaultImageContent, TimeUtil.getCurrentDateTime()));
for (int i = 0; i < IMAGE_OWNED_BY_DEFAULT_USER_ID.length; ++i)
dao.put(con, new UserImage(IMAGE_OWNED_BY_DEFAULT_USER_ID[i], DEFAULT_USER_ID, "byte/octet-stream", defaultImageContent, new DateTime(IMAGE_OWNED_BY_DEFAULT_USER_ID.length - i)));
}
}