/////////////////////////////////////////////////////////////////////////////
//
// 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.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.address.AddressDO;
import org.projectforge.address.PersonalAddressDO;
import org.projectforge.common.MyBeanComparator;
import org.projectforge.web.wicket.AbstractMassEditPage;
import org.projectforge.web.wicket.AbstractSecuredPage;
public class AddressCampaignValueMassUpdatePage extends AbstractMassEditPage
{
private static final long serialVersionUID = 7327415575226885117L;
@SpringBean(name = "addressCampaignValueDao")
private AddressCampaignValueDao addressCampaignValueDao;
private final List<AddressDO> addresses;
private final AddressCampaignValueMassUpdateForm form;
public AddressCampaignValueMassUpdatePage(final AbstractSecuredPage callerPage, final List<AddressDO> addresses,
final AddressCampaignDO addressCampaign, final Map<Integer, PersonalAddressDO> personalAddressMap,
final Map<Integer, AddressCampaignValueDO> addressCampaignValueMap)
{
super(new PageParameters(), callerPage);
this.addresses = addresses;
form = new AddressCampaignValueMassUpdateForm(this, addressCampaign);
body.add(form);
form.init();
final List<IColumn<AddressDO, String>> columns = AddressCampaignValueListPage.createColumns(this, false, true, null, personalAddressMap,
addressCampaignValueMap);
@SuppressWarnings("serial")
final SortableDataProvider<AddressDO, String> sortableDataProvider = new SortableDataProvider<AddressDO, String>() {
@Override
public Iterator< ? extends AddressDO> iterator(final long first, final long count)
{
final SortParam sp = getSort();
if (addresses == null) {
return null;
}
final Comparator<AddressDO> comp = new MyBeanComparator<AddressDO>(sp.getProperty().toString(), sp.isAscending());
Collections.sort(addresses, comp);
return addresses.subList((int)first, (int)(first + count)).iterator();
}
public long size()
{
return addresses != null ? addresses.size() : 0;
}
public IModel<AddressDO> model(final AddressDO object)
{
return new Model<AddressDO>() {
@Override
public AddressDO getObject()
{
return object;
}
};
}
};
sortableDataProvider.setSort("name", SortOrder.DESCENDING);
final DefaultDataTable<AddressDO, String> dataTable = new DefaultDataTable<AddressDO, String>("table", columns, sortableDataProvider, 1000);
body.add(dataTable);
}
@Override
protected String getTitle()
{
return getString("addressCampaignValue.massupdate.title");
}
/**
* @see org.projectforge.web.wicket.AbstractMassEditPage#updateAll()
*/
@Override
protected void updateAll()
{
final AddressCampaignValueDO data = form.data;
addressCampaignValueDao.massUpdate(addresses, data.getAddressCampaign(), data.getValue(), data.getComment());
super.updateAll();
}
}