All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.deephacks.tools4j.config.ConfigChanges Maven / Gradle / Ivy

The newest version!
package org.deephacks.tools4j.config;

import com.google.common.base.Optional;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

import java.util.Collection;

public class ConfigChanges {
    private Multimap, ConfigChange> changes = ArrayListMultimap.create();
    private Class changeClass;
    public ConfigChanges() {
    }

    public void add(ConfigChange change) {
        changeClass = change.getChangeClass();
        changes.put(change.getChangeClass(), change);
    }

    public Class getChangeClass() {
        return changeClass;
    }

    public Collection> getChanges() {
        return changes.values();
    }

    public static class ConfigChange {
        private Optional before;
        private Optional after;
        private Class changeClass;

        private ConfigChange(Optional before, Optional after){
            this.before = before;
            this.after = after;
            if (before().isPresent()) {
                changeClass = before().get().getClass();
            } else {
                changeClass = after().get().getClass();
            }
        }

        public Class getChangeClass() {
            return changeClass;
        }

        public static  ConfigChange created(T after) {
            return new ConfigChange(Optional.absent(), Optional.of(after));
        }

        public static  ConfigChange deleted(T before) {
            return new ConfigChange(Optional.of(before), Optional.absent());
        }

        public static  ConfigChange updated(T before, T after) {
            return new ConfigChange(Optional.of(before), Optional.of(after));
        }

        public Optional before() {
            return before;
        }

        public Optional after() {
            return after;
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy