
fiftyone.mobile.detection.entities.stream.NodeV31 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of 51Degrees.detection.core Show documentation
Show all versions of 51Degrees.detection.core Show documentation
51Degrees core detection solution
The newest version!
package fiftyone.mobile.detection.entities.stream;
import fiftyone.mobile.detection.Dataset;
import fiftyone.mobile.detection.entities.NodeIndex;
import fiftyone.mobile.detection.factories.NodeFactoryShared;
import fiftyone.mobile.detection.readers.BinaryReader;
import fiftyone.properties.DetectionConstants;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/* *********************************************************************
* This Source Code Form is copyright of 51Degrees Mobile Experts Limited.
* Copyright © 2014 51Degrees Mobile Experts Limited, 5 Charlotte Close,
* Caversham, Reading, Berkshire, United Kingdom RG4 7BY
*
* This Source Code Form is the subject of the following patent
* applications, owned by 51Degrees Mobile Experts Limited of 5 Charlotte
* Close, Caversham, Reading, Berkshire, United Kingdom RG4 7BY:
* European Patent Application No. 13192291.6; and
* United States Patent Application Nos. 14/085,223 and 14/085,301.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0.
*
* If a copy of the MPL was not distributed with this file, You can obtain
* one at http://mozilla.org/MPL/2.0/.
*
* This Source Code Form is "Incompatible With Secondary Licenses", as
* defined by the Mozilla Public License, v. 2.0.
* ********************************************************************* */
/**
* Represents a NodeV31 which can be used with the Stream data set.
* NumericChidren and RankedSignatureIndexes are not loaded into memory when
* the entity is constructed, they're only loaded from the data source when
* requested.
*/
public class NodeV31 extends Node {
/**
* An array of the ranked signature indexes for the node.
*/
private int[] rankedSignatureIndexes;
/**
* Constructs a new instance of NodeV31.
* @param dataSet The data set the node is contained within.
* @param offset The offset in the data structure to the node.
* @param reader Reader connected to the source data structure and
* positioned to start reading.
*/
public NodeV31(fiftyone.mobile.detection.entities.stream.Dataset dataSet,
int offset, BinaryReader reader) {
super(dataSet, offset, reader);
}
/**
* Reads the ranked signature count from a 4 byte integer.
* @param reader Reader connected to the source data structure and
* positioned to start reading.
* @return The count of ranked signatures associated with the node.
*/
@Override
public int readerRankedSignatureCount(BinaryReader reader) {
return reader.readInt32();
}
@Override
protected NodeIndex[] readNodeIndexes(Dataset dataSet, BinaryReader reader,
int offset, int count) {
return NodeFactoryShared.readNodeIndexesV31(dataSet, reader,
offset, count);
}
/**
* Returns An array of the ranked signature indexes for the node.
* @return An array of the ranked signature indexes for the node.
*/
@Override
public int[] getRankedSignatureIndexes() {
if (rankedSignatureIndexes == null) {
synchronized (this) {
if (rankedSignatureIndexes == null) {
BinaryReader reader = null;
try {
reader = pool.getReader();
reader.setPos(numericChildrenPosition +
((DetectionConstants.SIZE_OF_SHORT +
DetectionConstants.SIZE_OF_INT) *
getNumericChildrenLength()));
rankedSignatureIndexes = readIntegerArray(reader, rankedSignatureCount);
} catch (IOException ex) {
Logger.getLogger(NodeV31.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (reader != null) {
pool.release(reader);
}
}
}
}
}
return rankedSignatureIndexes;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy