diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java new file mode 100644 index 000000000..a3d96cd5a --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java @@ -0,0 +1,30 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.zkoss.ganttz.timetracker.zoom; + +/** + * @author Óscar González Fernández + * + */ +public interface IDetailItemModificator { + + public DetailItem applyModificationsTo(DetailItem item); + +} diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java new file mode 100644 index 000000000..ebcbb1887 --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java @@ -0,0 +1,68 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.zkoss.ganttz.timetracker.zoom; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang.Validate; + +/** + * @author Óscar González Fernández + * + */ +public class SeveralModificators implements IDetailItemModificator { + + public static IDetailItemModificator empty() { + return new SeveralModificators(Collections + . emptyList()); + } + + public static IDetailItemModificator create( + IDetailItemModificator... modificators) { + return new SeveralModificators(Arrays.asList(modificators)); + } + + public static IDetailItemModificator create( + Collection modificators) { + return new SeveralModificators(modificators); + } + + private final List modificators; + + private SeveralModificators( + Collection modificators) { + Validate.noNullElements(modificators); + this.modificators = new ArrayList(modificators); + } + + @Override + public DetailItem applyModificationsTo(DetailItem item) { + DetailItem result = item; + for (IDetailItemModificator each : modificators) { + result = each.applyModificationsTo(result); + } + return result; + } + +}