AdminBean adminBean = getAdminBean(request);
Site site = adminBean.getSite();
SiteDomain siteDomain = SiteDomainDAO.load(Format.getLong(form.getSiteDomainId()));
initSiteProfiles(form, site);
Menu referenceMenu = MenuDAO.load(site.getSiteId(), Format.getLong(form.getCreateMenuId()));
Menu parent = null;
int seqNum = 0;
if (form.getCreateMode().equals("C")) { // append child node
for (Menu child : referenceMenu.getMenuChildren()) {
if (child.getSeqNum() >= seqNum) {
seqNum = child.getSeqNum() + 1;
}
}
parent = referenceMenu;
} else if (form.getCreateMode().equals("B")) { // before current
parent = referenceMenu.getMenuParent();
seqNum = referenceMenu.getSeqNum();
for (Menu child : parent.getMenuChildren()) {
if (child.getSeqNum() >= seqNum) {
child.setSeqNum(child.getSeqNum() + 1);
em.persist(child);
}
}
} else if (form.getCreateMode().equals("A")) { // after current
parent = referenceMenu.getMenuParent();
seqNum = referenceMenu.getSeqNum() + 1;
for (Menu child : parent.getMenuChildren()) {
if (child.getSeqNum() >= seqNum) {
child.setSeqNum(child.getSeqNum() + 1);
em.persist(child);
}
}
}
Menu menu = new Menu();
menu.setSiteDomain(siteDomain);
menu.setMenuParent(parent);
menu.setSeqNum(seqNum);
menu.setMenuSetName(referenceMenu.getMenuSetName());
menu.setMenuType(Constants.MENU_HOME);
menu.setMenuUrl("");
menu.setMenuWindowTarget("");
menu.setMenuWindowMode("");
menu.setPublished(Constants.PUBLISHED_YES);
menu.setRecUpdateBy(adminBean.getUser().getUserId());
menu.setRecCreateBy(adminBean.getUser().getUserId());
menu.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
menu.setRecCreateDatetime(new Date(System.currentTimeMillis()));
parent.getMenuChildren().add(menu);
MenuLanguage menuLanguage = new MenuLanguage();
menuLanguage.setMenuName("New Menu");
menuLanguage.setMenu(menu);
menuLanguage.setRecUpdateBy(adminBean.getUser().getUserId());
menuLanguage.setRecCreateBy(adminBean.getUser().getUserId());
menuLanguage.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
menuLanguage.setRecCreateDatetime(new Date(System.currentTimeMillis()));
menuLanguage.setSiteProfileClass(site.getSiteProfileClassDefault());
em.persist(menuLanguage);
menu.getMenuLanguages().add(menuLanguage);
menu.setMenuLanguage(menuLanguage);
em.persist(menu);
form.setMenuId(Format.getLong(menu.getMenuId()));
form.setMenuParentId(parent.getMenuId().toString());
form.setMenuSetName(menu.getMenuSetName());
form.setMenuName(menuLanguage.getMenuName());
form.setMenuType(Constants.MENU_HOME);
form.setMenuUrl("");
form.setMenuWindowTarget("");
form.setMenuWindowMode("");
form.setPublished(menu.getPublished() == Constants.PUBLISHED_YES ? true : false);
form.setMode(Constants.MODE_UPDATE);
Long siteProfileClassId = form.getSiteProfileClassId();
form.setJsonMenuList(Utility.makeJSONMenuTree(Format.getLong(form.getSiteDomainId()), siteProfileClassId, form.isSiteProfileClassDefault()).toHtmlString());
form.setPublished(true);
form.setSequence(false);