package org.korsakow.domain.command; import java.sql.SQLException; import java.util.Collection; import org.dsrg.soenea.domain.MapperException; import org.dsrg.soenea.domain.command.CommandException; import org.dsrg.soenea.environment.CreationException; import org.dsrg.soenea.environment.KeyNotFoundException; import org.dsrg.soenea.uow.UoW; import org.korsakow.domain.Image; import org.korsakow.domain.interf.IKeyword; import org.korsakow.domain.interf.ISnu; import org.korsakow.domain.mapper.input.ImageInputMapper; import org.korsakow.domain.mapper.input.SnuInputMapper; public class UpdateImageCommand extends AbstractCommand{ public static final String IMAGE = "image"; public static final String KEYWORDS = "keywords"; public static final String FILENAME = "filename"; public static final String DURATION = "duration"; public static final String NAME = "name"; public static final String ID = "id"; public UpdateImageCommand(Helper request, Helper response) { super(request, response); } public void execute() throws CommandException { try { Image v = null; v = ImageInputMapper.map(request.getLong(ID)); v.setName(request.getString(NAME)); v.setFilename(request.getString(FILENAME)); v.setKeywords((Collection<IKeyword>)request.get(KEYWORDS)); v.setDuration(request.getLong(DURATION)); response.set(IMAGE, v); for (ISnu snu : SnuInputMapper.findByMainMediaId(v.getId())) { snu.setName(v.getName()); UoW.getCurrent().registerDirty(snu); ((Response)response).addModifiedResource(snu); } UoW.getCurrent().registerDirty(v); UoW.getCurrent().commit(); UoW.newCurrent(); } catch (MapperException e) { throw new CommandException(e); } catch (SQLException e) { throw new CommandException(e); } catch (KeyNotFoundException e) { throw new CommandException(e); } catch (CreationException e) { throw new CommandException(e); } } }