/******************************************************************************* * Copyright (c) 2013 Imperial College London. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Raul Castro Fernandez - initial design and implementation ******************************************************************************/ package uk.ac.imperial.lsds.seep.comm.serialization; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import uk.ac.imperial.lsds.seep.comm.serialization.messages.Payload; import uk.ac.imperial.lsds.seep.comm.serialization.messages.TuplePayload; public class DataTuple implements DataTupleI, Serializable{ private static final long serialVersionUID = 1L; private TuplePayload payload; private final Map<String, Integer> idxMapper; public DataTuple(Map<String, Integer> idxMapper, TuplePayload payload){ this.payload = payload; //this.attrValues = payload.attrValues; this.idxMapper = idxMapper; } /** DEBUG METHODS */ public HashMap<String, Integer> getMap(){ return (HashMap<String, Integer>) idxMapper; } public int size(){ // if(payload == null || payload.attrValues == null) return 0; return payload.attrValues.size(); } /** */ public DataTuple(){ idxMapper = new HashMap<String, Integer>(); } public static DataTuple getNoopDataTuple(){ return new DataTuple(); } public TuplePayload getPayload(){ return payload; } public void set(TuplePayload tuplePayload){ this.payload = tuplePayload; } public void setValuesMutable(Object...objects){ payload.attrValues = new Payload(objects); } /** EXPERIMENTAL **/ public DataTuple setValues(Object...objects){ TuplePayload tp = new TuplePayload(); tp.attrValues = new Payload(objects); tp.timestamp = this.payload.timestamp; tp.instrumentation_ts = this.payload.instrumentation_ts; DataTuple dt = new DataTuple(idxMapper, tp); return dt; } // to be used by java2sdg @Deprecated public DataTuple _setValues(Object[] objects){ TuplePayload tp = new TuplePayload(); tp.attrValues = new Payload(objects); tp.timestamp = this.payload.timestamp; tp.instrumentation_ts = this.payload.instrumentation_ts; DataTuple dt = new DataTuple(idxMapper, tp); return dt; } public DataTuple newTuple(Object...objects){ TuplePayload tp = new TuplePayload(); tp.attrValues = new Payload(objects); tp.timestamp = System.currentTimeMillis(); tp.instrumentation_ts = tp.timestamp; DataTuple dt = new DataTuple(idxMapper, tp); return dt; } // to be used by java2sdg @Deprecated public DataTuple _newTuple(Object[] objects){ TuplePayload tp = new TuplePayload(); tp.attrValues = new Payload(objects); tp.timestamp = System.currentTimeMillis(); tp.instrumentation_ts = tp.timestamp; DataTuple dt = new DataTuple(idxMapper, tp); return dt; } @Override public Byte getByte(String attribute) { return (Byte)payload.attrValues.get(idxMapper.get(attribute)); } @Override public byte[] getByteArray(String attribute) { return (byte[])payload.attrValues.get(idxMapper.get(attribute)); } @Override public Character getChar(String attribute) { return (Character)payload.attrValues.get(idxMapper.get(attribute)); } @Override public Double getDouble(String attribute) { return (Double)payload.attrValues.get(idxMapper.get(attribute)); } @Override public double[] getDoubleArray(String attribute) { return (double[])payload.attrValues.get(idxMapper.get(attribute)); } @Override public Float getFloat(String attribute) { return (Float)payload.attrValues.get(idxMapper.get(attribute)); } @Override public Integer getInt(String attribute) { return (Integer)payload.attrValues.get(idxMapper.get(attribute)); } @Override public int[] getIntArray(String attribute) { return (int[])payload.attrValues.get(idxMapper.get(attribute)); } @Override public float[] getFloatArray(String attribute) { return (float[])payload.attrValues.get(idxMapper.get(attribute)); } @Override public Long getLong(String attribute) { return (Long)payload.attrValues.get(idxMapper.get(attribute)); } @Override public Short getShort(String attribute) { return (Short)payload.attrValues.get(idxMapper.get(attribute)); } @Override public String getString(String attribute) { return (String)payload.attrValues.get(idxMapper.get(attribute)); } @Override public String[] getStringArray(String attribute) { return (String[])payload.attrValues.get(idxMapper.get(attribute)); } @Override public Object getValue(String attribute) { // System.out.println("getValue = attrValues.size -> "+payload.attrValues.size()+" accessed in "+idxMapper.get(attribute)); return (Object)payload.attrValues.get(idxMapper.get(attribute)); } @Override public boolean getBoolean(String attribute){ // System.out.println("getBoolean = attrValues.size -> "+payload.attrValues.size()+" accessed in "+idxMapper.get(attribute)); return (Boolean)payload.attrValues.get(idxMapper.get(attribute)); } @Override public String toString(){ return payload.toString(); } }