Skip to content

Instantly share code, notes, and snippets.

@takezoe
Created January 16, 2012 09:38
Show Gist options
  • Save takezoe/1619994 to your computer and use it in GitHub Desktop.
Save takezoe/1619994 to your computer and use it in GitHub Desktop.
Plan about breakable IterationCallback in Mirage
// SqlManager#iterate()内でBreakableIterationCallbackだったらisBreak()をチェックするようなイメージ。
public abstract class BreakableIterationCallback<A, B> implements IterationCallback<A, B> {
private boolean break = false;
public void setBreak(){
this.break = break;
}
public boolean isBreak(){
return this.break;
}
}
Integer result = sqlManager.iterate(
Book.class,
new BreakableIterationCallback<Book, Integer>() {
private int result;
@Override public Integer iterate(Book entity) {
result = result + entity.price;
if(result > 10000){
setBreak();
}
return result;
}
},
SQL_PREFIX + "SqlManagerImplTest_selectBooks.sql");
// 例外を投げるならこんな感じ?
public abstract class BreakableIterationCallback<A, B> implements IterationCallback<A, B> {
protected void break(){
throw new BreakIterationException();
}
}
Integer result = sqlManager.iterate(
Book.class,
new BreakableIterationCallback<Book, Integer>() {
private int result;
@Override public Integer iterate(Book entity) {
result = result + entity.price;
if(result > 10000){
break();
}
return result;
}
},
SQL_PREFIX + "SqlManagerImplTest_selectBooks.sql");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment