package org.juxtapose.streamline.stm; import java.util.HashSet; import org.juxtapose.streamline.producer.ISTMEntryProducer; import org.juxtapose.streamline.producer.executor.IExecutor; import org.juxtapose.streamline.tools.DataConstants; import org.juxtapose.streamline.util.ISTMEntry; import org.juxtapose.streamline.util.ISTMEntrySubscriber; import org.juxtapose.streamline.util.PersistentArrayList; import org.juxtapose.streamline.util.Status; import org.juxtapose.streamline.util.data.DataType; import org.juxtapose.streamline.util.data.DataTypeStatus; import com.trifork.clj_ds.IPersistentMap; import com.trifork.clj_ds.PersistentHashMap; /** * @author Pontus J�rgne * 17 okt 2011 * Copyright (c) Pontus J�rgne. All rights reserved */ public class STMEntryFactory implements ISTMEntryFactory { /** * @param inStatus * @param inProducer * @return */ public ISTMEntry createData( Status inStatus, ISTMEntryProducer inProducer ) { IPersistentMap<String, DataType<?>> dataMap = PersistentHashMap.create(); PersistentArrayList<ISTMEntrySubscriber> lowPrioSubscribers = new PersistentArrayList<ISTMEntrySubscriber>(); PersistentArrayList<ISTMEntrySubscriber> highPrioSubscribers = new PersistentArrayList<ISTMEntrySubscriber>(); return new STMEntry( dataMap, new HashSet<String>(), lowPrioSubscribers, highPrioSubscribers, inProducer, 0l, true ); } /* (non-Javadoc) * @see org.juxtapose.streamline.stm.impl.IPublishedDataFactory#createData(org.juxtapose.streamline.util.Status, org.juxtapose.streamline.producer.IDataProducer, org.juxtapose.streamline.util.IDataSubscriber) */ public ISTMEntry createData( Status inStatus, ISTMEntryProducer inProducer, ISTMEntrySubscriber inSubscriber ) { IPersistentMap<String, DataType<?>> dataMap = PersistentHashMap.create( ); dataMap = dataMap.assoc( DataConstants.FIELD_STATUS, new DataTypeStatus( inStatus ) ); PersistentArrayList<ISTMEntrySubscriber> emptySubscribers = new PersistentArrayList<ISTMEntrySubscriber>(); if( inSubscriber.getPriority() == IExecutor.HIGH ) { PersistentArrayList<ISTMEntrySubscriber> highPrioSubscribers = new PersistentArrayList<ISTMEntrySubscriber>( new ISTMEntrySubscriber[]{inSubscriber}); return new STMEntry( dataMap, new HashSet<String>(), emptySubscribers, highPrioSubscribers, inProducer, 0l, true ); } else { PersistentArrayList<ISTMEntrySubscriber> lowPrioSubscribers = new PersistentArrayList<ISTMEntrySubscriber>( new ISTMEntrySubscriber[]{inSubscriber}); return new STMEntry( dataMap, new HashSet<String>(), lowPrioSubscribers, emptySubscribers, inProducer, 0l, true ); } } }