/* * @(#)LongInterval.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.model.drawing.axis.interval; import com.egantt.model.drawing.DrawingTransform; import com.egantt.model.drawing.axis.AxisInterval; import com.egantt.model.drawing.axis.MutableInterval; import com.egantt.model.drawing.transform.LongTransform; public class LongInterval implements MutableInterval { protected long start; protected long finish; public LongInterval(long start, long finish) { this.start = start; this.finish = finish; } //___________________________________________________________________________ public void setStart(Object start) { this.start = ((Long)start).longValue(); } public void setFinish(Object finish) { this.finish = ((Long)finish).longValue(); } //___________________________________________________________________________ public Object getStart() { return new Long(start); } public Object getFinish() { return new Long(finish); } //___________________________________________________________________________ public Object getRange() { return new Long(finish - start); } //___________________________________________________________________________ public long getStartValue() { return start; } public long getFinishValue() { return finish; } //___________________________________________________________________________ public long getRangeValue() { return finish - start; } //___________________________________________________________________________ public boolean containsValue(Object o) { if (o == null || !(o instanceof Long)) return false; long value = ((Long) o).longValue(); return this.start <= value && this.finish >= value; } public boolean contains(AxisInterval i) { if (i == null || !(i instanceof LongInterval)) return false; LongInterval interval = (LongInterval) i; return this.start <= interval.getStartValue() && this.finish >= interval.getFinishValue(); } public boolean intersects(AxisInterval i) { if (i == null || !(i instanceof LongInterval)) return false; LongInterval interval = (LongInterval) i; return ! (finish < interval.getStartValue()) || ! (start > interval.getFinishValue()); } // ________________________________________________________________________ public AxisInterval union(AxisInterval i) { if (i == null) return new LongInterval(new Long(getStartValue()), new Long(getFinishValue())); if (!(i instanceof LongInterval)) return null; LongInterval interval = (LongInterval) i; return new LongInterval( Math.min(getStartValue(), interval.getStartValue()), Math.max(getFinishValue(), interval.getFinishValue())); } // ________________________________________________________________________ public Object clone() { return new LongInterval(getStartValue(), getFinishValue()); } public DrawingTransform getTransform() { return new LongTransform(getStartValue(), getFinishValue() - getStartValue()); } }