📄 entitylistiterator.java
字号:
}
/** PLEASE NOTE: Because of the nature of the JDBC ResultSet interface this method can be very inefficient; it is much better to just use previous() until it returns null */
public boolean hasPrevious() {
try {
if (resultSet.isFirst() || resultSet.isBeforeFirst()) {
return false;
} else {
// do a quick game to see if the resultSet is empty:
// if we are not in the last or afterLast positions and we haven't made any values yet, the result set is empty so return false
if (!haveMadeValue && !resultSet.isAfterLast() && !resultSet.isLast()) {
return false;
} else {
return true;
}
}
} catch (SQLException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error while checking to see if this is the first result", e);
}
}
/** Moves the cursor to the next position and returns the GenericValue object for that position; if there is no next, returns null */
public Object next() {
try {
if (resultSet.next()) {
return currentGenericValue();
} else {
return null;
}
} catch (SQLException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error getting the next result", e);
} catch (GenericEntityException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error creating GenericValue", e);
}
}
/** Returns the index of the next result, but does not guarantee that there will be a next result */
public int nextIndex() {
try {
return currentIndex() + 1;
} catch (GenericEntityException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException(e.getNonNestedMessage(), e.getNested());
}
}
/** Moves the cursor to the previous position and returns the GenericValue object for that position; if there is no previous, returns null */
public Object previous() {
try {
if (resultSet.previous()) {
return currentGenericValue();
} else {
return null;
}
} catch (SQLException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error getting the previous result", e);
} catch (GenericEntityException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error creating GenericValue", e);
}
}
/** Returns the index of the previous result, but does not guarantee that there will be a previous result */
public int previousIndex() {
try {
return currentIndex() - 1;
} catch (GenericEntityException e) {
if (!closed) {
try {
this.close();
} catch (GenericEntityException e1) {
Debug.logError(e1, "Error auto-closing EntityListIterator on error, so info below for more info on original error; close error: " + e1.toString(), module);
}
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error getting the current index", e);
}
}
public void setFetchSize(int rows) throws GenericEntityException {
try {
resultSet.setFetchSize(rows);
} catch (SQLException e) {
if (!closed) {
this.close();
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GenericEntityException("Error getting the next result", e);
}
}
public List getCompleteList() throws GenericEntityException {
try {
// if the resultSet has been moved forward at all, move back to the beginning
if (haveMadeValue && !resultSet.isBeforeFirst()) {
// do a quick check to see if the ResultSet is empty
resultSet.beforeFirst();
}
List list = new LinkedList();
Object nextValue = null;
while ((nextValue = this.next()) != null) {
list.add(nextValue);
}
return list;
} catch (SQLException e) {
if (!closed) {
this.close();
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error getting results", e);
} catch (GeneralRuntimeException e) {
if (!closed) {
this.close();
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GenericEntityException(e.getNonNestedMessage(), e.getNested());
}
}
/** Gets a partial list of results starting at start and containing at most number elements.
* Start is a one based value, ie 1 is the first element.
*/
public List getPartialList(int start, int number) throws GenericEntityException {
try {
if (number == 0) return new ArrayList();
List list = new ArrayList(number);
// if can't reposition to desired index, throw exception
if (!resultSet.absolute(start)) {
// maybe better to just return an empty list here...
return list;
//throw new GenericEntityException("Could not move to the start position of " + start + ", there are probably not that many results for this find.");
}
// get the first as the current one
list.add(this.currentGenericValue());
Object nextValue = null;
// init numRetreived to one since we have already grabbed the initial one
int numRetreived = 1;
//number > numRetreived comparison goes first to avoid the unwanted call to next
while (number > numRetreived && (nextValue = this.next()) != null) {
list.add(nextValue);
numRetreived++;
}
return list;
} catch (SQLException e) {
if (!closed) {
this.close();
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GeneralRuntimeException("Error getting results", e);
} catch (GeneralRuntimeException e) {
if (!closed) {
this.close();
Debug.logWarning("Warning: auto-closed EntityListIterator because of exception: " + e.toString(), module);
}
throw new GenericEntityException(e.getNonNestedMessage(), e.getNested());
}
}
public void add(Object obj) {
throw new GeneralRuntimeException("CursorListIterator currently only supports read-only access");
}
public void remove() {
throw new GeneralRuntimeException("CursorListIterator currently only supports read-only access");
}
public void set(Object obj) {
throw new GeneralRuntimeException("CursorListIterator currently only supports read-only access");
}
protected void finalize() throws Throwable {
try {
if (!closed) {
this.close();
Debug.logError("====================================================================\n ERROR: EntityListIterator Not Closed for Entity [" + modelEntity==null?"":modelEntity.getEntityName() + "], caught in Finalize\n ====================================================================\n", module);
}
} catch (Exception e) {
Debug.logError(e, "Error closing the SQLProcessor in finalize EntityListIterator", module);
}
super.finalize();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -