logger.entering(this.getClass().getName(), methodName);
try {
this.requestDump();
Manager manager = (Manager)mService.get(mid);
if(manager == null) {
errors.put("page", "指定されたマネージャは存在しません。");
return forward("/error.jsp");
}
Date now = new Date();
LayoutXml layoutXml = new LayoutXml();
for(int i = 0; i < sum; i++) {
// クラス名からインスタンスを生成する。
String className = this.request.getParameter(i + "_ComponentClassName");
if( className == null || className.isEmpty() ) {
continue;
}
try {
@SuppressWarnings("unchecked")
Class<ComponentType> clazz = (Class<ComponentType>) Class.forName(XML_PACKAGE + "." + className);
if( clazz == null) {
continue;
}
ComponentType component = clazz.newInstance();
NumberingParamaterMap map = new NumberingParamaterMap(this.request);
map.setNumber(i);
BeanUtil.copy(map, component);
layoutXml.getComponents().add(component);
}
catch(ClassNotFoundException e) {
logger.info("クラスが存在しません。");
} catch (InstantiationException e) {
logger.info("インスタンスが作成できません。");
} catch (IllegalAccessException e) {
logger.info("権限がありません。");
}
}
// 保存
Layout layout = null;
// 新規登録の場合
if(lid < 1) {
layout = new Layout();
layout.setId(LayoutService.createNewKey());
layout.setRegisteredDate(now);
}
// 更新の場合
else {
layout = lService.get(manager, lid);
}
layoutXml.setName(layoutName);
layoutXml.setWidth(width);
layoutXml.setHeight(height);
layout.setXmlModel(layoutXml);
layout.setUpdatedDate(now);
layout.setManagerRef(manager);
lService.put(manager, layout);
// 編集画面に遷移する。
return redirect("/layout/edit?mid=" + manager.getUid().getName()+"&lid=" + layout.getId().getId());
}
finally {
logger.exiting(this.getClass().getName(), methodName);
}
}