List of usage examples for org.apache.commons.compress.utils ByteUtils toLittleEndian
public static void toLittleEndian(final byte[] b, final long value, final int off, final int length)
From source file:org.apache.hawq.pxf.plugins.ignite.IgnitePartitionFragmenter.java
/** * Returns list of fragments for Ignite table queries * * @throws UnsupportedOperationException if a partition of unknown type was found * * @return a list of fragments/* ww w . j ava 2 s. c o m*/ */ @Override public List<Fragment> getFragments() throws UnsupportedOperationException { if (LOG.isDebugEnabled()) { LOG.debug("getFragments() called; dataSource is '" + inputData.getDataSource() + "'"); } byte[] fragmentMetadata = null; byte[] fragmentUserdata = null; if (partitionType == null) { if (LOG.isDebugEnabled()) { LOG.debug("getFragments() found no partition"); } Fragment fragment = new Fragment(inputData.getDataSource(), replicaHostAddressWrapped, fragmentMetadata, fragmentUserdata); fragments.add(fragment); if (LOG.isDebugEnabled()) { LOG.debug("getFragments() successful"); } return fragments; } switch (partitionType) { case DATE: { if (LOG.isDebugEnabled()) { LOG.debug("getFragments() found DATE partition"); } int currInterval = intervalNum; Calendar fragStart = rangeStart; while (fragStart.before(rangeEnd)) { Calendar fragEnd = (Calendar) fragStart.clone(); switch (intervalType) { case DAY: fragEnd.add(Calendar.DAY_OF_MONTH, currInterval); break; case MONTH: fragEnd.add(Calendar.MONTH, currInterval); break; case YEAR: fragEnd.add(Calendar.YEAR, currInterval); break; } if (fragEnd.after(rangeEnd)) fragEnd = (Calendar) rangeEnd.clone(); fragmentMetadata = new byte[16]; ByteUtils.toLittleEndian(fragmentMetadata, fragStart.getTimeInMillis(), 0, 8); ByteUtils.toLittleEndian(fragmentMetadata, fragEnd.getTimeInMillis(), 8, 8); Fragment fragment = new Fragment(inputData.getDataSource(), replicaHostAddressWrapped, fragmentMetadata, fragmentUserdata); fragments.add(fragment); // Continue the previous fragment fragStart = fragEnd; } break; } case INT: { if (LOG.isDebugEnabled()) { LOG.debug("getFragments() found INT partition"); } int rangeStart = Integer.parseInt(range[0]); int rangeEnd = Integer.parseInt(range[1]); int currInterval = intervalNum; int fragStart = rangeStart; while (fragStart < rangeEnd) { int fragEnd = fragStart + currInterval; if (fragEnd > rangeEnd) { fragEnd = rangeEnd; } fragmentMetadata = new byte[8]; ByteUtils.toLittleEndian(fragmentMetadata, fragStart, 0, 4); ByteUtils.toLittleEndian(fragmentMetadata, fragEnd, 4, 4); Fragment fragment = new Fragment(inputData.getDataSource(), replicaHostAddressWrapped, fragmentMetadata, fragmentUserdata); fragments.add(fragment); // Continue the previous fragment fragStart = fragEnd; } break; } case ENUM: { if (LOG.isDebugEnabled()) { LOG.debug("getFragments() found ENUM partition"); } for (String frag : range) { fragmentMetadata = frag.getBytes(); Fragment fragment = new Fragment(inputData.getDataSource(), replicaHostAddressWrapped, fragmentMetadata, fragmentUserdata); fragments.add(fragment); } break; } default: { throw new UnsupportedOperationException("getFragments() found a partition of unknown type and failed"); } } if (LOG.isDebugEnabled()) { LOG.debug("getFragments() successful"); } return fragments; }