/* BookSegmentTreeNode.java created 2008-02-23
*
*/
package org.signalml.app.model.book;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.beans.IntrospectionException;
import java.util.LinkedList;
import java.util.List;
import org.signalml.app.model.components.LabelledPropertyDescriptor;
import org.signalml.app.model.components.PropertyProvider;
import org.signalml.domain.book.StandardBook;
import org.signalml.domain.book.StandardBookSegment;
import org.springframework.context.MessageSourceResolvable;
/** BookSegmentTreeNode
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class BookSegmentTreeNode implements PropertyProvider, MessageSourceResolvable {
private StandardBook book;
private StandardBookSegment segment;
private int channelIndex;
private int segmentIndex;
private float size;
private float startTime;
private float endTime;
private int atomCount;
public BookSegmentTreeNode(StandardBook book, int channelIndex, int segmentIndex) {
this.book = book;
this.channelIndex = channelIndex;
this.segmentIndex = segmentIndex;
this.segment = book.getSegmentAt(segmentIndex, channelIndex);
this.size = segment.getSegmentTimeLength();
this.startTime = segment.getSegmentTime();
this.endTime = startTime + size;
this.atomCount = segment.getAtomCount();
}
public StandardBook getBook() {
return book;
}
public StandardBookSegment getSegment() {
return segment;
}
public int getChannelIndex() {
return channelIndex;
}
public int getSegmentIndex() {
return segmentIndex;
}
public float getSize() {
return size;
}
public float getStartTime() {
return startTime;
}
public float getEndTime() {
return endTime;
}
public int getAtomCount() {
return atomCount;
}
public boolean hasSignal() {
return segment.hasSignal();
}
public int getSignalLength() {
if (segment.hasSignal()) {
return segment.getSignalSamples().length;
} else {
return 0;
}
}
public float getSignalEnergy() {
return segment.getSignalEnergy();
}
public float getDecompositionEnergy() {
return segment.getDecompositionEnergy();
}
@Override
public List<LabelledPropertyDescriptor> getPropertyList() throws IntrospectionException {
LinkedList<LabelledPropertyDescriptor> list = new LinkedList<LabelledPropertyDescriptor>();
list.add(new LabelledPropertyDescriptor(_("channel index"), "channelIndex", BookSegmentTreeNode.class, "getChannelIndex", null));
list.add(new LabelledPropertyDescriptor(_("segment index"), "segmentIndex", BookSegmentTreeNode.class, "getSegmentIndex", null));
list.add(new LabelledPropertyDescriptor(_("size"), "size", BookSegmentTreeNode.class, "getSize", null));
list.add(new LabelledPropertyDescriptor(_("start time"), "startTime", BookSegmentTreeNode.class, "getStartTime", null));
list.add(new LabelledPropertyDescriptor(_("end time"), "endTime", BookSegmentTreeNode.class, "getEndTime", null));
list.add(new LabelledPropertyDescriptor(_("atom count"), "atomCount", BookSegmentTreeNode.class, "getAtomCount", null));
list.add(new LabelledPropertyDescriptor(_("has signal"), "signal", BookSegmentTreeNode.class, "hasSignal", null));
list.add(new LabelledPropertyDescriptor(_("signal length"), "signalLength", BookSegmentTreeNode.class, "getSignalLength", null));
list.add(new LabelledPropertyDescriptor(_("signal energy"), "signalEnergy", BookSegmentTreeNode.class, "getSignalEnergy", null));
list.add(new LabelledPropertyDescriptor(_("decomposition energy"), "decompositionEnergy", BookSegmentTreeNode.class, "getDecompositionEnergy", null));
return list;
}
@Override
public Object[] getArguments() {
return new Object[] { new Integer(segmentIndex), new Float(getSize()), new Float(getStartTime()), new Float(getEndTime()) };
}
@Override
public String[] getCodes() {
return new String[] { "bookTree.segment" };
}
@Override
public String getDefaultMessage() {
return "BookSegement ???";
}
}