X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Flocal%2FTextIndex.java;h=b36ed4b9dce871206e20964a412ccd30ac2ca0e0;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=bb1b61178ed148f93fdd2f072b7b578c3a944fc3;hpb=4b5a7d721d994a49057e9bfb403c7bff1b376660;p=aaf%2Fauthz.git diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java index bb1b6117..b36ed4b9 100644 --- a/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java +++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -40,21 +40,21 @@ import org.onap.aaf.misc.env.Trans; public class TextIndex { private static final int REC_SIZE=8; - + private File file; private DataFile dataFile=null; - + public TextIndex(File theFile) { file = theFile; } - + public void open() throws IOException { dataFile = new DataFile(file,"r"); dataFile.open(); } - + public void close() throws IOException { - if(dataFile!=null) { + if (dataFile!=null) { dataFile.close(); dataFile=null; } @@ -63,9 +63,9 @@ public class TextIndex { public int find(Object key, AbsData.Reuse reuse, int offset) throws IOException { return find(key,reuse.tokenData,reuse.getFieldData(),offset); } - + public int find(Object key, DataFile.Token dtok, Field df, int offset) throws IOException { - if(dataFile==null) { + if (dataFile==null) { throw new IOException("File not opened"); } long hash = hashToLong(key.hashCode()); @@ -74,13 +74,13 @@ public class TextIndex { IntBuffer tib = ttok.getIntBuffer(); long lhash; int curr; - while((max-min)>100) { + while ((max-min)>100) { ttok.pos((curr=(min+(max-min)/2))*REC_SIZE); tib.rewind(); lhash = hashToLong(tib.get()); - if(lhashhash) { + } else if (lhash>hash) { max=curr-1; } else { min=curr-40; @@ -88,45 +88,45 @@ public class TextIndex { break; } } - + List entries = new ArrayList<>(); - for(int i=min;i<=max;++i) { + for (int i=min;i<=max;++i) { ttok.pos(i*REC_SIZE); tib.rewind(); lhash = hashToLong(tib.get()); - if(lhash==hash) { + if (lhash==hash) { entries.add(tib.get()); - } else if(lhash>hash) { + } else if (lhash>hash) { break; } } - - for(Integer i : entries) { + + for (Integer i : entries) { dtok.pos(i); - if(df.at(offset).equals(key)) { + if (df.at(offset).equals(key)) { return i; } } return -1; } - + /* * Have to change Bytes into a Long, to avoid the inevitable signs in the Hash */ private static long hashToLong(int hash) { long rv; - if(hash<0) { + if (hash<0) { rv = 0xFFFFFFFFL & hash; } else { rv = hash; } return rv; } - + public void create(final Trans trans,final DataFile data, int maxLine, char delim, int fieldOffset, int skipLines) throws IOException { FileChannel fos; - + List list = new LinkedList<>(); // Some hashcodes will double... DO NOT make a set TimeTaken tt2 = trans.start("Open Files", Env.SUB); RandomAccessFile raf=null; @@ -138,22 +138,22 @@ public class TextIndex { } finally { tt2.done(); } - + try { - - Token t = data.new Token(maxLine); + + Token t = data.new Token(maxLine); Field f = t.new Field(delim); - + int count = 0; - if(skipLines>0) { + if (skipLines>0) { trans.info().log("Skipping",skipLines,"line"+(skipLines==1?" in":"s in"),data.file().getName()); } - for(int i=0;i { public int hash, pos; public Idx(Object obj, int pos) { hash = obj.hashCode(); this.pos = pos; } - + @Override public int compareTo(Idx ib) { long a = hashToLong(hash); @@ -244,7 +244,7 @@ public class TextIndex { */ @Override public boolean equals(Object o) { - if(o!=null && o instanceof Idx) { + if (o!=null && o instanceof Idx) { return hash == ((Idx)o).hash; } return false;