/* * Copyright 2011-2014 Brian Pellin. * * This file is part of KeePassDroid. * * KeePassDroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * KeePassDroid is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with KeePassDroid. If not, see <http://www.gnu.org/licenses/>. * */ package com.keepassdroid.database.iterator; import java.util.NoSuchElementException; import com.keepassdroid.database.PwEntryV3; import com.keepassdroid.database.SearchParameters; public class EntrySearchStringIteratorV3 extends EntrySearchStringIterator { private PwEntryV3 entry; private SearchParameters sp; public EntrySearchStringIteratorV3(PwEntryV3 entry) { this.entry = entry; this.sp = SearchParameters.DEFAULT; } public EntrySearchStringIteratorV3(PwEntryV3 entry, SearchParameters sp) { this.entry = entry; this.sp = sp; } private static final int title = 0; private static final int url = 1; private static final int username = 2; private static final int comment = 3; private static final int maxEntries = 4; private int current = 0; @Override public boolean hasNext() { return current < maxEntries; } @Override public String next() { // Past the end of the list if (current == maxEntries) { throw new NoSuchElementException("Past final string"); } useSearchParameters(); String str = getCurrentString(); current++; return str; } private void useSearchParameters() { if (sp == null) { return; } boolean found = false; while (!found) { switch (current) { case title: found = sp.searchInTitles; case url: found = sp.searchInUrls; case username: found = sp.searchInUserNames; case comment: found = sp.searchInNotes; default: found = true; } if (!found) { current++; } } } private String getCurrentString() { switch (current) { case title: return entry.getTitle(); case url: return entry.getUrl(); case username: return entry.getUsername(); case comment: return entry.getNotes(); default: return ""; } } }