///////////////////////////////////////////////////////////////////////////// // // Project ProjectForge Community Edition // www.projectforge.org // // Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de) // // ProjectForge is dual-licensed. // // This community edition is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as published // by the Free Software Foundation; version 3 of the License. // // This community edition is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General // Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, see http://www.gnu.org/licenses/. // ///////////////////////////////////////////////////////////////////////////// package org.projectforge.plugins.marketing; import java.io.Serializable; import java.util.Iterator; import org.apache.log4j.Logger; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.util.string.StringValue; import org.projectforge.address.AddressDO; import org.projectforge.address.AddressDao; import org.projectforge.core.UserException; import org.projectforge.web.wicket.AbstractEditPage; import org.projectforge.web.wicket.EditPage; /** * The controler of the edit formular page. Most functionality such as insert, update, delete etc. is done by the super class. * @author Kai Reinhard (k.reinhard@micromata.de) */ @EditPage(defaultReturnPage = AddressCampaignValueListPage.class) public class AddressCampaignValueEditPage extends AbstractEditPage<AddressCampaignValueDO, AddressCampaignValueEditForm, AddressCampaignValueDao> { public static final String PARAMETER_ADDRESS_ID = "addressId"; public static final String PARAMETER_ADDRESS_CAMPAIGN_ID = "campaignId"; private static final long serialVersionUID = -5058143025817192156L; private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(AddressCampaignValueEditPage.class); @SpringBean(name = "addressCampaignValueDao") private AddressCampaignValueDao addressCampaignValueDao; @SpringBean(name = "addressCampaignDao") private AddressCampaignDao addressCampaignDao; @SpringBean(name = "addressDao") private AddressDao addressDao; public AddressCampaignValueEditPage(final PageParameters parameters) { super(parameters, "plugins.marketing.addressCampaign"); StringValue sval = parameters.get(AbstractEditPage.PARAMETER_KEY_ID); final Integer id = sval.isEmpty() == true ? null : sval.toInteger(); if (id == null) { // Create new entry. sval = parameters.get(PARAMETER_ADDRESS_ID); final Integer addressId = sval.isEmpty() ? null : sval.toInteger(); sval = parameters.get(PARAMETER_ADDRESS_CAMPAIGN_ID); final Integer addressCampaignId = sval.isEmpty() || "null".equals(sval.toString()) ? null : sval.toInteger(); if (addressId == null || addressCampaignId == null) { throw new UserException("plugins.marketing.addressCampaignValue.error.addressOrCampaignNotGiven"); } final AddressDO address = addressDao.getById(addressId); final AddressCampaignDO addressCampaign = addressCampaignDao.getById(addressCampaignId); if (address == null || addressCampaign == null) { throw new UserException("plugins.marketing.addressCampaignValue.error.addressOrCampaignNotGiven"); } AddressCampaignValueDO data = addressCampaignValueDao.get(addressId, addressCampaignId); if (data == null) { data = new AddressCampaignValueDO(); data.setAddress(address); data.setAddressCampaign(addressCampaign); } init(data); } else { init(); } } @Override public boolean isUpdateAndNextSupported() { return true; } @Override protected void updateAndNext() { if (getData().getId() == null) { if (log.isDebugEnabled() == true) { log.debug("update in " + this.editPageSupport.getClass() + ": " + getData()); } create(); this.editPageSupport.setUpdateAndNext(true); setResponsePage(); } else { super.updateAndNext(); } } @Override public void setResponsePage() { if (this.editPageSupport.isUpdateAndNext() == true) { this.editPageSupport.setUpdateAndNext(false); final AddressCampaignValueListPage listPage = (AddressCampaignValueListPage) this.returnToPage; final Iterator<AddressDO> it = listPage.getList().iterator(); while (it.hasNext() == true) { if (it.next().getId().equals(getHighlightedRowId()) == true && it.hasNext() == true) { // Found current entry and next entry available. final AddressDO address = it.next(); final PageParameters parameters = new PageParameters(); parameters.add(AddressCampaignValueEditPage.PARAMETER_ADDRESS_ID, String.valueOf(address.getId())); parameters.add(AddressCampaignValueEditPage.PARAMETER_ADDRESS_CAMPAIGN_ID, String.valueOf(getData().getAddressCampaignId())); final AddressCampaignValueEditPage editPage = new AddressCampaignValueEditPage(parameters); editPage.setReturnToPage(this.returnToPage); setResponsePage(editPage); return; } } } super.setResponsePage(); } /** * @return Address id instead of address campaign value id. * @see org.projectforge.web.wicket.AbstractEditPage#getHighlightedRowId() */ @Override protected Serializable getHighlightedRowId() { return getData().getAddressId(); } @Override protected AddressCampaignValueDao getBaseDao() { return addressCampaignValueDao; } @Override protected AddressCampaignValueEditForm newEditForm(final AbstractEditPage< ? , ? , ? > parentPage, final AddressCampaignValueDO data) { return new AddressCampaignValueEditForm(this, data); } @Override protected Logger getLogger() { return log; } }