Package com.mobixess.jodb.core.index

Examples of com.mobixess.jodb.core.index.IndexingRecord


                case RELATIVELY_ADDRESSED:
                    record._objectOffset = _input.readInt()+_input.getCursorOffset();
                    break;
                case PRIMITIVE:
                    record._primitiveRawDataBuffer.clear();
                    IndexingRecord indexingRecord = IndexingRecord.findIndexingRecord(record._fieldID, _indexes);
                    if (unfoldPrimitive) {
                        Object value;
                        if( indexingRecord!=null ){
                            int dataLen = PrimitiveJavaTypesUtil.getDataOutputWriteLen(record._fieldTypeName);
                            record._primitiveRawDataBuffer.limit(dataLen);
                            ByteBuffer buffer = indexingRecord.getPersistedDataBuffer();
                            _input.getChannel().read(buffer);
                            buffer.flip();
                            value = PrimitiveJavaTypesUtil.getAsWrappedPrimitive( PrimitiveJavaTypesUtil.getEnumeratedType(record._fieldTypeName) , buffer);
                            _processedIndexes++;
                        }else{
                            value = Utils.readPrimitive(record._fieldTypeName, _input);
                        }
                        record._value = value;
                    }else{
                        int dataLen = PrimitiveJavaTypesUtil.getDataOutputWriteLen(record._fieldTypeName);
                        record._primitiveRawDataBuffer.limit(dataLen);
                        _input.getChannel().read(record._primitiveRawDataBuffer);
                        record._primitiveRawDataBuffer.flip();
                        if( indexingRecord!=null ){
                            indexingRecord.setPersistedDataBufferValue(record._primitiveRawDataBuffer);
                            record._primitiveRawDataBuffer.rewind();
                            _processedIndexes++;
                        }
                    }
                }
                _remainingPersistentFieldsInCategory--;
                checkNextCategoryNeed();
                if(_translatedClassDescriptor!=null){
                    int fieldIndex = _translatedClassDescriptor.getFieldIndexForID(record._fieldID);
                    if(fieldIndex == -1){//field doesn't exist in class definition
                        record.clear();
                        continue;
                    }else{
                        _unprocessedFields.clear(fieldIndex);
                    }
                }
                validRecord = true;
                break;
            }
            if(!validRecord && _translatedClassDescriptor != null){
                int nextUnrocessedIndex = _unprocessedFields.nextSetBit(0);
                if(nextUnrocessedIndex == -1){
                    throw new JodbIOException("nextUnrocessedIndex == -1)");
                }
                FieldAndIDRecord fieldAndIDRecord = _translatedClassDescriptor.getAllFields()[nextUnrocessedIndex];
                Class fieldType = fieldAndIDRecord._field.getType();
                record._fieldID = fieldAndIDRecord._id;
                IndexingRecord indexingRecord = IndexingRecord.findIndexingRecord(record._fieldID, _indexes);
                record._fieldTypeName = fieldType.getName();
                record._fieldTypeID = base.getOrSetClassTypeSubstitutionID( record._fieldTypeName );
                if(fieldType.isPrimitive()){
                    record._category = FIELD_CATEGORIES.PRIMITIVE;
                    if(unfoldPrimitive){
                        record._value = PrimitiveJavaTypesUtil.getDefaultWrapperInstance(record._fieldTypeName);
                    }else{
                        int dataLen = PrimitiveJavaTypesUtil.getDataOutputWriteLen(record._fieldTypeName);
                        record._primitiveRawDataBuffer.limit(dataLen);
                        record._primitiveRawDataBuffer.put(AUXILIARY_MAX_PRIMITIVE_CLEAN_ARRAY,0,dataLen);
                        record._primitiveRawDataBuffer.flip();
                    }
                    if(indexingRecord!=null){
                        indexingRecord.setPersistedDataBufferValue(PrimitiveJavaTypesUtil.getDefaultValueAsByteBuffer(record._fieldTypeName));
                        _processedIndexes++;
                    }
                }else{
                    record._category = FIELD_CATEGORIES.RELATIVELY_ADDRESSED;
                    record._objectOffset = 0;
View Full Code Here


        }
       
        @Override
        public IndexingRecord pull()
        {
            IndexingRecord indexingRecord = super.pull();
            if(indexingRecord == null){
                indexingRecord = new IndexingRecord();
            }
            indexingRecord.reset();
            return indexingRecord;
        }
View Full Code Here

        }
        for (int i = 0; i < primitiveFields.size(); i++) {
            Field next = primitiveFields.elementAt(i);
            int id = base.getOrSetFieldSubstitutionID(next);
            transactionFile.writeShort(id);
            IndexingRecord record = IndexingRecord.findIndexingRecord(id, indexes);
            if(record!=null){
                //ByteBuffer currentlyPersistedValue = record.getPersistedDataBuffer();
                ByteBuffer pendingValue = record.getPendingDataBuffer();
                pendingValue.clear();
                PrimitiveJavaTypesUtil.primitiveToByteBuffer(objectToPersist, next, pendingValue);
                pendingValue.flip();
                transactionFile.getChannel().write(pendingValue);
                pendingValue.rewind();
View Full Code Here

                    offsetId = tHandle.getHandle().getObjectEntryOffset();
                }
                Vector<IndexingRecord> indexingRecords = tHandle.getIndexes();
                if (indexingRecords != null) {
                    for (int i = 0; i < indexingRecords.size(); i++) {
                        IndexingRecord record = indexingRecords.elementAt(i);
                        ByteBuffer currentValue = record.getPersistedDataBuffer();
                        JODBIndexingAgent indexingAgent = record.getIndexingAgent();
                        if (currentValue.limit() != 0 && !indexingAgent.removeIndex(offsetId, currentValue, null)) {
                            throw new JodbIOException("Illegal index state: can't remove index");
                        }
                        ByteBuffer pendingValue = record.getPendingDataBuffer();
                        if (pendingValue.limit() == 0) {
                            throw new JodbIOException(
                                    "indexing value unavailable for " + offsetId);
                        }
                        indexingAgent.insertIndex(offsetId, pendingValue, context);
View Full Code Here

TOP

Related Classes of com.mobixess.jodb.core.index.IndexingRecord

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.