/**
*
*/
package org.squidy.nodes;
import java.util.List;
import javax.xml.bind.annotation.XmlType;
import org.squidy.manager.data.IData;
import org.squidy.manager.data.IDataContainer;
import org.squidy.manager.data.Processor;
import org.squidy.manager.data.Processor.Status;
import org.squidy.manager.data.impl.DataAnalog;
import org.squidy.manager.data.impl.DataPosition2D;
import org.squidy.manager.model.AbstractNode;
import org.squidy.manager.util.DataUtility;
/**
* @author mahsajenabi
*
*/
@XmlType(name = "Compass")
@Processor(
types = { Processor.Type.INPUT, Processor.Type.OUTPUT },
name = "Compass",
tags = {"compass", "magnetic", "heading" },
status = Status.UNSTABLE
)
public class Compass extends AbstractNode {
/* (non-Javadoc)
* @see org.squidy.manager.model.AbstractNode#onStart()
*/
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
/* (non-Javadoc)
* @see org.squidy.manager.model.AbstractNode#onStop()
*/
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
/* (non-Javadoc)
* @see org.squidy.manager.model.AbstractNode#preProcess(org.squidy.manager.data.IDataContainer)
*/
@Override
public IDataContainer preProcess(IDataContainer dataContainer) {
double magneticHeading = 0;
double y = 0;
List<DataAnalog> dataAnalogs = DataUtility.getDataOfType(DataAnalog.class, dataContainer);
for (DataAnalog dataAnalog : dataAnalogs) {
if (dataAnalog.hasAttribute(iPhone.HEADING_MAGNETIC)) {
magneticHeading = dataAnalog.getValue();
}
else if (dataAnalog.hasAttribute(iPhone.HEADING_Y)) {
y = dataAnalog.getValue();
}
}
publish(new DataPosition2D(Compass.class, magneticHeading,y));
return super.preProcess(dataContainer);
}
/* (non-Javadoc)
* @see org.squidy.manager.model.AbstractNode#postProcess(org.squidy.manager.data.IDataContainer)
*/
@Override
public IDataContainer postProcess(IDataContainer dataContainer) {
return super.postProcess(dataContainer);
}
public IData process(DataAnalog dataAnalog) {
if (dataAnalog.hasAttribute(iPhone.HEADING_MAGNETIC)) {
System.out.println("HEADING_MAGNETIC HAS VALUE: " + dataAnalog.getValue());
}
return dataAnalog;
}
}