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

de.uni.freiburg.iig.telematik.jagal.ts.MarkingStatePairContainer Maven / Gradle / Ivy

Go to download

JAGAL provides implementations for directed graphs (weighted and unweighted) and various types of transition systems as well as utils for graph traversal and modification.

The newest version!
package de.uni.freiburg.iig.telematik.jagal.ts;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractState;


public class MarkingStatePairContainer, O> extends StatePairContainer {
	private final Set> markedPairs = new HashSet<>();
	private final Set> unmarkedPairs = new HashSet<>();
	
	public MarkingStatePairContainer(){
		super();
	}

        public static , O> MarkingStatePairContainer newInstance(StatePair... statePairs) {
                MarkingStatePairContainer container = new MarkingStatePairContainer<>();
                for (StatePair statePair : statePairs) {
                        container.addStatePair(statePair);
                }
                return container;
        }

        public static , O> MarkingStatePairContainer newInstance(Collection> statePairs) {
                MarkingStatePairContainer container = new MarkingStatePairContainer<>();
                for (StatePair statePair : statePairs) {
                        container.addStatePair(statePair);
                }
                return container;
        }
	
	public Set> getMarkedStatePairs(){
		return Collections.unmodifiableSet(markedPairs);
	}
	
	public Set> getUnmarkedStatePairs(){
		return Collections.unmodifiableSet(unmarkedPairs);
	}
	
	
	public void markPair(S state1, S state2){
		StatePair testPair = getStatePair(state1, state2);
		if(testPair != null){
			markedPairs.add(testPair);
			unmarkedPairs.remove(testPair);
		}
	}
	
	public boolean isMarked(S state1, S state2){
		return markedPairs.contains(new StatePair<>(state1, state2));
	}
	
	public void markPair(StatePair statePair){
		if(statePairs.contains(statePair)){
			markedPairs.add(getEqualStatePair(statePair));
			unmarkedPairs.remove(getEqualStatePair(statePair));
		}
	}

	@Override
	public boolean addStatePair(StatePair statePair){
		boolean isNewElement =  super.addStatePair(statePair);
		if(isNewElement){
			if(unmarkedPairs == null){
				System.out.println("set null");
			} else {
				unmarkedPairs.add(statePair);
			}
		}
		return isNewElement;
	}
	
	public static void main(String[] args){
		MarkingStatePairContainer c = new MarkingStatePairContainer<>();
		c.addStatePair(new State("s0"), new State("s5"));
		System.out.println(c.getStatePairs());
		StatePair p1 = new StatePair<>(new State("z4"), new State("z3"));
		StatePair p2 = new StatePair<>(new State("z4"), new State("z2"));
		System.out.println(p1.hashCode());
		System.out.println(p2.hashCode());
//		c.addStatePair(p1);
//		System.out.println(c.containsStatePair(new State("s0"), new State("s1")));
		System.out.println(c.containsStatePair(new State("s0"), new State("s5")));
	}
	
}