import java.nio.ByteBuffer;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.datastore.core.historytree.HtIo;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HistoryTreeStub;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HtTestUtils;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode.NodeType;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HistoryTreeStub;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode.NodeType;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicHistoryTreeStub;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.OverlappingHistoryTreeStub;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.IOException;
import java.util.Arrays;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.datastore.core.historytree.HtIo;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode.NodeType;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicHistoryTreeStub;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.OverlappingHistoryTreeStub;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HistoryTreeStub;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
/**
* Test the default abstract implementation of the tree, with a concrete stub.
import java.io.PrintStream;
import java.nio.channels.ClosedChannelException;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode.NodeType;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
/**
* Some utility classes and methods for the history tree tests
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTreeTestBase;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicHistoryTreeStub;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
/**
* Test the classic history tree
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTreeTestBase;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HtTestUtils;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
import org.junit.Test;
/**
import java.io.IOException;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTreeTestBase;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HtTestUtils;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
import org.junit.Test;
/**
import java.io.IOException;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
/**
* A stub history tree for the base abstract history tree
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic.ClassicNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
/**
* A stub for the classic history tree. Limits type "E" to {@link HTInterval}.
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.OverlappingHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.OverlappingNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
/**
* A stub for the overlapping history tree, specifying the object type to
Eclipse-ExtensibleAPI: true
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.tracecompass.common.core
-Export-Package: org.eclipse.tracecompass.internal.datastore.core;x-internal:=true,
+Export-Package: org.eclipse.tracecompass.datastore.core.interval,
+ org.eclipse.tracecompass.internal.datastore.core;x-internal:=true,
org.eclipse.tracecompass.internal.datastore.core.condition;x-internal:=true,
org.eclipse.tracecompass.internal.datastore.core.historytree;x-internal:=true,
org.eclipse.tracecompass.internal.datastore.core.serialization;x-internal:=true,
org.eclipse.tracecompass.internal.provisional.datastore.core.historytree;x-friends:="org.eclipse.tracecompass.segmentstore.core,org.eclipse.tracecompass.segmentstore.core.tests",
org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.classic;x-friends:="org.eclipse.tracecompass.statesystem.core,org.eclipse.tracecompass.statesystem.core.tests",
org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping;x-friends:="org.eclipse.tracecompass.segmentstore.core,org.eclipse.tracecompass.segmentstore.core.tests",
- org.eclipse.tracecompass.internal.provisional.datastore.core.interval;x-friends:="org.eclipse.tracecompass.segmentstore.core,org.eclipse.tracecompass.segmentstore.core.tests",
org.eclipse.tracecompass.internal.provisional.datastore.core.serialization;
x-friends:="org.eclipse.tracecompass.statesystem.core,
- org.eclipse.tracecompass.statesystem.core.tests,
- org.eclipse.tracecompass.segmentstore.core,
+ org.eclipse.tracecompass.statesystem.core.tests,
+ org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.segmentstore.core.tests"
Import-Package: com.google.common.annotations,
com.google.common.base,
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2017 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.datastore.core.interval;
+
+import java.util.Objects;
+import java.util.StringJoiner;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferWriter;
+
+/**
+ * Basic implementation of {@link IHTInterval}.
+ *
+ * @author Geneviève Bastien
+ */
+public class HTInterval implements IHTInterval {
+
+ private final long fStart;
+ private final long fEnd;
+
+ /**
+ * The object to use to read a BaseHtObject from the disk
+ */
+ public static final IHTIntervalReader<HTInterval> INTERVAL_READER =
+ (buffer) -> new HTInterval(buffer.getLong(), buffer.getLong());
+
+ /**
+ * Create a new segment.
+ *
+ * The end position should be equal to or greater than the start position.
+ *
+ * @param start
+ * Start position of the segment
+ * @param end
+ * End position of the segment
+ */
+ public HTInterval(long start, long end) {
+ if (end < start) {
+ throw new IllegalArgumentException();
+ }
+ fStart = start;
+ fEnd = end;
+ }
+
+ @Override
+ public long getStart() {
+ return fStart;
+ }
+
+ @Override
+ public long getEnd() {
+ return fEnd;
+ }
+
+ @Override
+ public String toString() {
+ return (new StringJoiner(", ", "[", "]")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ .add(String.valueOf(fStart))
+ .add(String.valueOf(fEnd))
+ .toString();
+ }
+
+ @Override
+ public int getSizeOnDisk() {
+ return 2 * Long.BYTES;
+ }
+
+ @Override
+ public void writeSegment(@NonNull ISafeByteBufferWriter buffer) {
+ buffer.putLong(fStart);
+ buffer.putLong(fEnd);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(fStart, fEnd);
+ }
+
+ @Override
+ public boolean equals(@Nullable Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj.getClass() != getClass()) {
+ return false;
+ }
+ HTInterval other = (HTInterval) obj;
+ return (fStart == other.fStart
+ && fEnd == other.fEnd);
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2017 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.datastore.core.interval;
+
+/**
+ * Generic interface for any serializable object (like a time range) that can be used in the
+ * generic history tree.
+ *
+ * @author Alexandre Montplaisir
+ * @author Geneviève Bastien
+ */
+public interface IHTInterval extends ISerializableObject {
+
+ /**
+ * The start position/time of the object.
+ *
+ * @return The start position
+ */
+ long getStart();
+
+ /**
+ * The end position/time of the object
+ *
+ * @return The end position
+ */
+ long getEnd();
+
+ /**
+ * Utility method to check if the current interval intersects a timestamp.
+ *
+ * @param timestamp
+ * The timestamp to check
+ * @return If it intersects or not
+ */
+ default boolean intersects(long timestamp) {
+ if (getStart() <= timestamp && timestamp <= getEnd()) {
+ return true;
+ }
+ return false;
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2017 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.datastore.core.interval;
+
+import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferReader;
+
+/**
+ * A factory that reads object from a byte buffer and create a new object
+ *
+ * @author Geneviève Bastien
+ * @param <E>
+ * The type of objects that will be read
+ */
+@FunctionalInterface
+public interface IHTIntervalReader<E extends IHTInterval> {
+
+ /**
+ * Method to deserialize segments to disk for Segment History Tree
+ *
+ * @param buffer
+ * HTNode buffer to read from
+ * @return the Segment read from the buffer
+ */
+ E readInterval(ISafeByteBufferReader buffer);
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2017 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.datastore.core.interval;
+
+import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferWriter;
+
+/**
+ * An object that can be serialized
+ *
+ * @author Geneviève Bastien
+ */
+public interface ISerializableObject {
+
+ /**
+ * Get the size on disk in bytes of an object
+ *
+ * @return the size occupied by this segment when stored in a Segment
+ * History Tree (in bytes)
+ */
+ int getSizeOnDisk();
+
+ /**
+ * Method to serialize an object to a safe byte buffer
+ *
+ * @param buffer
+ * The safe byte buffer to write to
+ */
+ void writeSegment(ISafeByteBufferWriter buffer);
+}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2017 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+@org.eclipse.jdt.annotation.NonNullByDefault
+package org.eclipse.tracecompass.datastore.core.interval;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.log.TraceCompassLog;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.datastore.core.Activator;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHistoryTree;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.NonNullUtils;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.datastore.core.historytree.HtIo;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode.NodeType;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.SafeByteBufferFactory;
import java.util.function.Predicate;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
/**
* Interface for history tree nodes
import java.util.function.Predicate;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
/**
* An interface for trees on disk that save temporal data.
import java.io.IOException;
import java.util.Collection;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import com.google.common.annotations.VisibleForTesting;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.exceptions.RangeException;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
import com.google.common.annotations.VisibleForTesting;
import java.io.IOException;
import java.util.Collection;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import com.google.common.annotations.VisibleForTesting;
import java.io.File;
import java.io.IOException;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
/**
* Basic implementation of {@link AbstractOverlappingHistoryTree} that can
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
import com.google.common.annotations.VisibleForTesting;
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.provisional.datastore.core.interval;
-
-import java.util.Objects;
-import java.util.StringJoiner;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferWriter;
-
-/**
- * Basic implementation of {@link IHTInterval}.
- *
- * @author Geneviève Bastien
- */
-public class HTInterval implements IHTInterval {
-
- private final long fStart;
- private final long fEnd;
-
- /**
- * The object to use to read a BaseHtObject from the disk
- */
- public static final IHTIntervalReader<HTInterval> INTERVAL_READER =
- (buffer) -> new HTInterval(buffer.getLong(), buffer.getLong());
-
- /**
- * Create a new segment.
- *
- * The end position should be equal to or greater than the start position.
- *
- * @param start
- * Start position of the segment
- * @param end
- * End position of the segment
- */
- public HTInterval(long start, long end) {
- if (end < start) {
- throw new IllegalArgumentException();
- }
- fStart = start;
- fEnd = end;
- }
-
- @Override
- public long getStart() {
- return fStart;
- }
-
- @Override
- public long getEnd() {
- return fEnd;
- }
-
- @Override
- public String toString() {
- return (new StringJoiner(", ", "[", "]")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- .add(String.valueOf(fStart))
- .add(String.valueOf(fEnd))
- .toString();
- }
-
- @Override
- public int getSizeOnDisk() {
- return 2 * Long.BYTES;
- }
-
- @Override
- public void writeSegment(@NonNull ISafeByteBufferWriter buffer) {
- buffer.putLong(fStart);
- buffer.putLong(fEnd);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(fStart, fEnd);
- }
-
- @Override
- public boolean equals(@Nullable Object obj) {
- if (obj == null) {
- return false;
- }
- if (obj.getClass() != getClass()) {
- return false;
- }
- HTInterval other = (HTInterval) obj;
- return (fStart == other.fStart
- && fEnd == other.fEnd);
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.provisional.datastore.core.interval;
-
-/**
- * Generic interface for any serializable object (like a time range) that can be used in the
- * generic history tree.
- *
- * @author Alexandre Montplaisir
- * @author Geneviève Bastien
- */
-public interface IHTInterval extends ISerializableObject {
-
- /**
- * The start position/time of the object.
- *
- * @return The start position
- */
- long getStart();
-
- /**
- * The end position/time of the object
- *
- * @return The end position
- */
- long getEnd();
-
- /**
- * Utility method to check if the current interval intersects a timestamp.
- *
- * @param timestamp
- * The timestamp to check
- * @return If it intersects or not
- */
- default boolean intersects(long timestamp) {
- if (getStart() <= timestamp && timestamp <= getEnd()) {
- return true;
- }
- return false;
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.provisional.datastore.core.interval;
-
-import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferReader;
-
-/**
- * A factory that reads object from a byte buffer and create a new object
- *
- * @author Geneviève Bastien
- * @param <E>
- * The type of objects that will be read
- */
-@FunctionalInterface
-public interface IHTIntervalReader<E extends IHTInterval> {
-
- /**
- * Method to deserialize segments to disk for Segment History Tree
- *
- * @param buffer
- * HTNode buffer to read from
- * @return the Segment read from the buffer
- */
- E readInterval(ISafeByteBufferReader buffer);
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-package org.eclipse.tracecompass.internal.provisional.datastore.core.interval;
-
-import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferWriter;
-
-/**
- * An object that can be serialized
- *
- * @author Geneviève Bastien
- */
-public interface ISerializableObject {
-
- /**
- * Get the size on disk in bytes of an object
- *
- * @return the size occupied by this segment when stored in a Segment
- * History Tree (in bytes)
- */
- int getSizeOnDisk();
-
- /**
- * Method to serialize an object to a safe byte buffer
- *
- * @param buffer
- * The safe byte buffer to write to
- */
- void writeSegment(ISafeByteBufferWriter buffer);
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-@org.eclipse.jdt.annotation.NonNullByDefault
-package org.eclipse.tracecompass.internal.provisional.datastore.core.interval;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.common.core.NonNullUtils;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.ISafeByteBufferWriter;
import org.eclipse.tracecompass.internal.provisional.datastore.core.serialization.SafeByteBufferFactory;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTCoreNodeTest;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.SegmentTreeNodeStub;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNodeTest;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.SegmentTreeNodeStub;
import org.junit.runner.RunWith;
import java.io.IOException;
import java.nio.file.Path;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.HistoryTreeSegmentStore;
import java.io.File;
import java.io.IOException;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentHistoryTree;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
package org.eclipse.tracecompass.internal.provisional.segmentstore.core;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.HTInterval;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
/**
* Extension of the BasicSegment, to implement ISegment2 so that it can be
package org.eclipse.tracecompass.internal.provisional.segmentstore.core;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
/**
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.NonNullUtils;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.NonNullUtils;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.AbstractOverlappingHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.Activator;
import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.internal.provisional.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.LazyArrayListStore;