package test.org.korsakow.command;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.dsrg.soenea.uow.UoW;
import org.junit.Test;
import org.korsakow.domain.ImageFactory;
import org.korsakow.domain.InterfaceFactory;
import org.korsakow.domain.ProjectFactory;
import org.korsakow.domain.SnuFactory;
import org.korsakow.domain.SoundFactory;
import org.korsakow.domain.TextFactory;
import org.korsakow.domain.VideoFactory;
import org.korsakow.domain.command.InsertImageCommand;
import org.korsakow.domain.command.InsertInterfaceCommand;
import org.korsakow.domain.command.InsertProjectCommand;
import org.korsakow.domain.command.InsertSnuCommand;
import org.korsakow.domain.command.InsertSoundCommand;
import org.korsakow.domain.command.InsertTextCommand;
import org.korsakow.domain.command.InsertVideoCommand;
import org.korsakow.domain.command.Request;
import org.korsakow.domain.command.Response;
import org.korsakow.domain.command.UpdateImageCommand;
import org.korsakow.domain.command.UpdateInterfaceCommand;
import org.korsakow.domain.command.UpdateProjectCommand;
import org.korsakow.domain.command.UpdateSnuCommand;
import org.korsakow.domain.command.UpdateSoundCommand;
import org.korsakow.domain.command.UpdateTextCommand;
import org.korsakow.domain.command.UpdateVideoCommand;
import org.korsakow.domain.interf.IImage;
import org.korsakow.domain.interf.IInterface;
import org.korsakow.domain.interf.IProject;
import org.korsakow.domain.interf.ISnu;
import org.korsakow.domain.interf.ISound;
import org.korsakow.domain.interf.IText;
import org.korsakow.domain.interf.IVideo;
import org.korsakow.domain.interf.IWidget;
import org.korsakow.ide.DataRegistry;
import org.korsakow.ide.ui.controller.helper.ViewHelper;
import test.org.korsakow.domain.AbstractDomainObjectTestCase;
import test.util.DomainTestUtil;
public class TestInsertCommand extends AbstractDomainObjectTestCase
{
@Test public void testInsertText() throws Exception
{
IText obj = TextFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateTextCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateTextCommand.NAME, obj.getName());
request.set(UpdateTextCommand.SOURCE, obj.getSource().getId());
request.set(UpdateTextCommand.FILENAME, obj.getFilename());
request.set(UpdateTextCommand.TEXTCONTENT, obj.getText());
InsertTextCommand command = new InsertTextCommand(request, response);
command.execute();
Long id = ((IText)response.get(UpdateTextCommand.TEXT)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
@Test public void testInsertSound() throws Exception
{
ISound obj = SoundFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateSoundCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateSoundCommand.NAME, obj.getName());
request.set(UpdateSoundCommand.FILENAME, obj.getFilename());
request.set(UpdateSoundCommand.SUBTITLES, obj.getSubtitles());
InsertSoundCommand command = new InsertSoundCommand(request, response);
command.execute();
Long id = ((ISound)response.get(UpdateSoundCommand.SOUND)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
@Test public void testInsertVideo() throws Exception
{
IVideo obj = VideoFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateVideoCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateVideoCommand.NAME, obj.getName());
request.set(UpdateVideoCommand.FILENAME, obj.getFilename());
InsertVideoCommand command = new InsertVideoCommand(request, response);
command.execute();
Long id = ((IVideo)response.get(UpdateVideoCommand.VIDEO)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
@Test public void testInsertImage() throws Exception
{
IImage obj = ImageFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateImageCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateImageCommand.NAME, obj.getName());
request.set(UpdateImageCommand.FILENAME, obj.getFilename());
InsertImageCommand command = new InsertImageCommand(request, response);
command.execute();
Long id = ((IImage)response.get(UpdateImageCommand.IMAGE)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
@Test public void testInsertSnu() throws Exception
{
ISnu obj = SnuFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateSnuCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateSnuCommand.NAME, obj.getName());
request.set(UpdateSnuCommand.BACKGROUND_SOUND_ID, obj.getBackgroundSound()!=null?obj.getBackgroundSound().getId():null);
request.set(UpdateSnuCommand.BACKGROUND_SOUND_MODE, obj.getBackgroundSoundMode());
request.set(UpdateSnuCommand.BACKGROUND_SOUND_VOLUME, obj.getBackgroundSoundVolume());
request.set(UpdateSnuCommand.BACKGROUND_SOUND_LOOPING, obj.getBackgroundSoundLooping());
request.set(UpdateSnuCommand.ENDER, obj.getEnder());
request.set(UpdateSnuCommand.INSERT_TEXT, obj.getInsertText());
request.set(UpdateSnuCommand.INTERFACE_ID, obj.getInterface()!=null?obj.getInterface().getId():null);
request.set(UpdateSnuCommand.LIVES, obj.getLives());
request.set(UpdateSnuCommand.LOOPING, obj.getLooping());
request.set(UpdateSnuCommand.MAIN_MEDIA_ID, obj.getMainMedia()!=null?obj.getMainMedia().getId():null);
request.set(UpdateSnuCommand.MAX_LINKS, obj.getMaxLinks());
request.set(UpdateSnuCommand.PREVIEW_MEDIA_ID, obj.getPreviewMedia()!=null?obj.getPreviewMedia().getId():null);
request.set(UpdateSnuCommand.PREVIEW_TEXT, obj.getPreviewText());
request.set(UpdateSnuCommand.RATING, obj.getRating());
request.set(UpdateSnuCommand.STARTER, obj.getStarter());
ViewHelper.addRulesToRequest(request, obj.getRules());
InsertSnuCommand command = new InsertSnuCommand(request, response);
command.execute();
Long id = ((ISnu)response.get(UpdateSnuCommand.SNU)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
@Test public void testInsertProject() throws Exception
{
IProject obj = ProjectFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj);
Response response = new Response();
Request request = new Request();
request.set(UpdateProjectCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateProjectCommand.NAME, obj.getName());
request.set(UpdateProjectCommand.BACKGROUND_SOUND_ID, obj.getBackgroundSound()!=null?obj.getBackgroundSound().getId():null);
request.set(UpdateProjectCommand.BACKGROUND_SOUND_VOLUME, obj.getBackgroundSoundVolume());
request.set(UpdateProjectCommand.BACKGROUND_IMAGE_ID, obj.getBackgroundImage()!=null?obj.getBackgroundImage().getId():null);
request.set(UpdateProjectCommand.CLICK_SOUND_ID, obj.getClickSound()!=null?obj.getClickSound().getId():null);
request.set(UpdateProjectCommand.CLICK_SOUND_VOLUME, obj.getClickSoundVolume());
request.set(UpdateProjectCommand.KEEP_LINKS, obj.getKeepLinksOnEmptySearch());
request.set(UpdateProjectCommand.MAX_LINKS, obj.getMaxLinks());
request.set(UpdateProjectCommand.MOVIE_HEIGHT, obj.getMovieHeight());
request.set(UpdateProjectCommand.MOVIE_WIDTH, obj.getMovieWidth());
request.set(UpdateProjectCommand.RANDOM_LINK_MODE, obj.getRandomLinkMode());
request.set(UpdateProjectCommand.SPLASH_SCREEN_MEDIA_ID, obj.getSplashScreenMedia()!=null?obj.getSplashScreenMedia().getId():null);
ViewHelper.addRulesToRequest(request, obj.getRules());
InsertProjectCommand command = new InsertProjectCommand(request, response);
command.execute();
Long id = ((IProject)response.get(UpdateProjectCommand.PROJECT)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
// @Test public void testInsertProjectRules() throws Exception
// {
// IProject project = ProjectFactory.createClean();
// DomainTestUtil.initializeRandom(project);
//
// Response response = new Response();
// Request request = new Request();
// project.fillRequest(request);
// ICommand command = new InsertProjectCommand(request, response);
// command.execute();
// Long id = request.getLong("id");
// project.setId(id);
//
// project.setRules(DomainTestUtil.createRandomRules());
// for (org.korsakow.ide.rules.Rule rule : project.getRules()) {
// Request ruleRequest = new Request();
// rule.fillRequest(ruleRequest);
// Response ruleResponse = new Response();
// InsertRuleCommand insertRuleCommand = new InsertRuleCommand(ruleRequest, ruleResponse);
// insertRuleCommand.execute();
// Long ruleId = ruleResponse.getLong("id");
// rule.setId(ruleId);
// }
//
// request = new Request();
// project.fillRequest(request);
// response = new Response();
// command = new UpdateProjectCommand(request, response);
// command.execute();
//
// UoW.getCurrent().commit();
// DataRegistry.flush();
//
// DomainTestUtil.assertEqual(dataFile, id, project);
// }
// @Test public void testInsertSnuRules() throws Exception
// {
// ISnu snu = SnuFactory.createClean();
// DomainTestUtil.initializeRandom(snu);
//
// Response response = new Response();
// Request request = new Request();
// snu.fillRequest(request);
// ICommand command = new InsertSnuCommand(request, response);
// command.execute();
// Long id = request.getLong("id");
// snu.setId(id);
//
// snu.setRules(DomainTestUtil.createRandomRules());
// for (org.korsakow.ide.rules.Rule rule : snu.getRules()) {
// Request ruleRequest = new Request();
// rule.fillRequest(ruleRequest);
// Response ruleResponse = new Response();
// InsertRuleCommand insertRuleCommand = new InsertRuleCommand(ruleRequest, ruleResponse);
// insertRuleCommand.execute();
// Long ruleId = ruleRequest.getLong("id");
// rule.setId(ruleId);
// }
//
// request = new Request();
// snu.fillRequest(request);
// response = new Response();
// command = new UpdateSnuCommand(request, response);
// command.execute();
//
// UoW.getCurrent().commit();
// DataRegistry.flush();
//
// DomainTestUtil.assertEqual(dataFile, id, snu);
// }
@Test public void testInsertInterface() throws Exception
{
IInterface obj = InterfaceFactory.createNew();
UoW.getCurrent().registerClean(obj);
DomainTestUtil.initializeRandom(obj, false);
Response response = new Response();
Request request = new Request();
request.set(UpdateInterfaceCommand.KEYWORDS, obj.getKeywords());
request.set(UpdateInterfaceCommand.NAME, obj.getName());
request.set(UpdateInterfaceCommand.CLICK_SOUND_ID, obj.getClickSound()!=null?obj.getClickSound().getId():null);
request.set(UpdateInterfaceCommand.CLICK_SOUND_VOLUME, obj.getClickSoundVolume());
request.set(UpdateInterfaceCommand.GRID_HEIGHT, obj.getGridHeight());
request.set(UpdateInterfaceCommand.GRID_WIDTH, obj.getGridWidth());
request.set(UpdateInterfaceCommand.WIDGET_COUNT, obj.getWidgets().size());
int i = 0;
for (IWidget widget : obj.getWidgets()) {
String base = "_" + i;
request.set(UpdateInterfaceCommand.WIDGET_HEIGHT + base, widget.getHeight());
request.set(UpdateInterfaceCommand.WIDGET_KEYWORDS + base, widget.getKeywords());
request.set(UpdateInterfaceCommand.WIDGET_NAME + base, widget.getName());
request.set(UpdateInterfaceCommand.WIDGET_PERSIST_ACTION + base, widget.getPersistAction().getId());
request.set(UpdateInterfaceCommand.WIDGET_PERSIST_CONDITION + base, widget.getPersistCondition().getId());
request.set(UpdateInterfaceCommand.WIDGET_TYPE + base, widget.getWidgetId());
request.set(UpdateInterfaceCommand.WIDGET_WIDTH + base, widget.getWidth());
request.set(UpdateInterfaceCommand.WIDGET_X + base, widget.getX());
request.set(UpdateInterfaceCommand.WIDGET_Y + base, widget.getY());
List<String> propertyIds = new ArrayList<String>();
List<Object> propertyValues = new ArrayList<Object>();
for (String propertyId : widget.getDynamicPropertyIds()) {
propertyIds.add(propertyId);
propertyValues.add(widget.getDynamicProperty(propertyId));
}
request.set(UpdateInterfaceCommand.WIDGET_PROPERTY_IDS + base, propertyIds);
request.set(UpdateInterfaceCommand.WIDGET_PROPERTY_VALUES + base, propertyValues);
++i;
}
InsertInterfaceCommand command = new InsertInterfaceCommand(request, response);
command.execute();
Long id = ((IInterface)response.get(UpdateInterfaceCommand.INTERFACE)).getId();
UoW.getCurrent().commit();
DataRegistry.flush();
DomainTestUtil.assertEqual(dataFile, id, obj);
}
}