diff --git a/ext/perzist-android-0.2-SNAPSHOT-sources.jar b/ext/perzist-android-0.2-SNAPSHOT-sources.jar new file mode 100644 index 0000000..d0f944d Binary files /dev/null and b/ext/perzist-android-0.2-SNAPSHOT-sources.jar differ diff --git a/ext/perzist-android-0.2-SNAPSHOT.jar b/ext/perzist-android-0.2-SNAPSHOT.jar new file mode 100644 index 0000000..8b8a051 Binary files /dev/null and b/ext/perzist-android-0.2-SNAPSHOT.jar differ diff --git a/ext/perzist-core-0.2-SNAPSHOT-sources.jar b/ext/perzist-core-0.2-SNAPSHOT-sources.jar new file mode 100644 index 0000000..1d812d0 Binary files /dev/null and b/ext/perzist-core-0.2-SNAPSHOT-sources.jar differ diff --git a/ext/perzist-core-0.2-SNAPSHOT.jar b/ext/perzist-core-0.2-SNAPSHOT.jar new file mode 100644 index 0000000..69f79d5 Binary files /dev/null and b/ext/perzist-core-0.2-SNAPSHOT.jar differ diff --git a/src/com/turtleplayer/Player.java b/src/com/turtleplayer/Player.java index 5a1cdd9..7197d72 100644 --- a/src/com/turtleplayer/Player.java +++ b/src/com/turtleplayer/Player.java @@ -32,18 +32,29 @@ import android.util.Log; import android.view.View; import android.view.View.OnClickListener; -import android.widget.*; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; +import android.widget.TextView; +import android.widget.Toast; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.util.Shorty; import com.turtleplayer.common.MatchFilterVisitor; import com.turtleplayer.controller.BroadcastsHandler; import com.turtleplayer.controller.PhoneStateHandler; import com.turtleplayer.dirchooser.DirChooserConstants; import com.turtleplayer.model.Instance; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.db.ObservableDatabase; -import com.turtleplayer.persistance.framework.filter.Filter; +import com.turtleplayer.persistance.turtle.db.ObservableDatabase; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; +import com.turtleplayer.persistance.turtle.db.TurtleDatabaseImpl; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.player.ObservableOutput; import com.turtleplayer.player.Output; @@ -57,7 +68,6 @@ import com.turtleplayer.preferences.Keys; import com.turtleplayer.preferences.Preferences; import com.turtleplayer.preferences.PreferencesObserver; -import com.turtleplayer.util.Shorty; import com.turtleplayer.view.AlbumArtView; import com.turtleplayer.view.FileChooser; @@ -241,7 +251,14 @@ else if(!Slides.NOW_PLAYING.equals(currSlide)) private void SetupApplication() { tp = (TurtlePlayer) getApplication(); - tp.db = new TurtleDatabase(tp.getApplicationContext()); + tp.db = new TurtleDatabase( new TurtleDatabaseImpl(tp.getApplicationContext()) + { + @Override + public void dbResetted() + { + tp.db.notifyCleared(); + } + }); tp.playlist = new Playlist(tp.getApplicationContext(), tp.db); fileChooser = new FileChooser(FileChooser.Mode.Genre, tp, this) { @@ -257,7 +274,7 @@ protected void filterChoosen(Filter filter) standartPlayOrderStrategy = new PlayOrderSorted(tp.db, tp.playlist); shufflePlayOrderStrategy = new PlayOrderRandom(tp.db, tp.playlist); playOrderStrategy = tp.playlist.preferences.get(Keys.SHUFFLE) ? - shufflePlayOrderStrategy : standartPlayOrderStrategy; + shufflePlayOrderStrategy : standartPlayOrderStrategy; } // ========================================= // @@ -267,9 +284,9 @@ protected void filterChoosen(Filter filter) private void SetupButtons() { shuffleButton.setImageDrawable( - tp.playlist.preferences.get(Keys.SHUFFLE) ? - getResources().getDrawable(R.drawable.dice48_active) : - getResources().getDrawable(R.drawable.dice48) + tp.playlist.preferences.get(Keys.SHUFFLE) ? + getResources().getDrawable(R.drawable.dice48_active) : + getResources().getDrawable(R.drawable.dice48) ); shuffleCheckBox.setChecked(tp.playlist.preferences.get(Keys.SHUFFLE)); @@ -366,7 +383,7 @@ public boolean onLongClick(View v) shuffleCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, - boolean isChecked) + boolean isChecked) { tp.playlist.preferences.set(Keys.SHUFFLE, isChecked); } @@ -401,7 +418,7 @@ public void onClick(View v) { Intent dirChooserIntent = new Intent(DIR_CHOOSER_ACTION); dirChooserIntent.putExtra(DirChooserConstants.ACTIVITY_PARAM_KEY_DIR_CHOOSER_INITIAL_DIR, - tp.playlist.preferences.getExitstingMediaPath().toString()); + tp.playlist.preferences.getExitstingMediaPath().toString()); Player.this.startActivityForResult(dirChooserIntent, DIR_CHOOSER_REQUEST); } }); @@ -462,7 +479,7 @@ public void run() } public void unpauseRescan(final int alreadyProcessed, - final int toProcess) + final int toProcess) { runOnUiThread(new Runnable() { @@ -586,7 +603,7 @@ public void changed(AbstractKey key) public void run() { shuffleButton.setImageDrawable(getResources().getDrawable( - shuffle ? R.drawable.dice48_active : R.drawable.dice48)); + shuffle ? R.drawable.dice48_active : R.drawable.dice48)); shuffleCheckBox.setChecked(shuffle); } }); @@ -661,8 +678,8 @@ public void onStartTrackingTouch(SeekBar seekBar) } public void onProgressChanged(SeekBar seekBar, - int progress, - boolean fromUser) + int progress, + boolean fromUser) { // Needed, Although Blank } @@ -825,9 +842,9 @@ private void SetupPhoneHandlers() @Override protected void onListItemClick(ListView l, - View v, - int position, - long id) + View v, + int position, + long id) { final Track trackSelected = fileChooser.choose((Instance) l.getItemAtPosition(position)); if (trackSelected != null) @@ -892,15 +909,15 @@ protected void rescan() @Override protected void onActivityResult(int requestCode, - int resultCode, - Intent data) + int resultCode, + Intent data) { if (requestCode == DIR_CHOOSER_REQUEST) { if (resultCode == RESULT_OK) { tp.playlist.preferences.set(Keys.MEDIA_DIR, - data.getStringExtra(DirChooserConstants.ACTIVITY_RETURN_KEY_DIR_CHOOSER_CHOOSED_DIR)); + data.getStringExtra(DirChooserConstants.ACTIVITY_RETURN_KEY_DIR_CHOOSER_CHOOSED_DIR)); mediaDir.setText(tp.playlist.preferences.getExitstingMediaPath().toString()); rescan(); } diff --git a/src/com/turtleplayer/common/MatchFilterVisitor.java b/src/com/turtleplayer/common/MatchFilterVisitor.java index b68cb57..8d3b2d6 100644 --- a/src/com/turtleplayer/common/MatchFilterVisitor.java +++ b/src/com/turtleplayer/common/MatchFilterVisitor.java @@ -1,11 +1,16 @@ package com.turtleplayer.common; -import com.turtleplayer.persistance.framework.filter.*; -import com.turtleplayer.persistance.source.relational.FieldPersistable; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldPersistableAsDouble; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldPersistableAsInteger; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldPersistableAsString; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldVisitor; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.filter.FilterSet; +import ch.hoene.perzist.access.filter.FilterVisitorGenerified; +import ch.hoene.perzist.access.filter.NotFilter; +import ch.hoene.perzist.access.filter.Operator; +import ch.hoene.perzist.source.relational.FieldPersistable; +import ch.hoene.perzist.source.relational.fieldtype.FieldPersistableAsDouble; +import ch.hoene.perzist.source.relational.fieldtype.FieldPersistableAsInteger; +import ch.hoene.perzist.source.relational.fieldtype.FieldPersistableAsString; +import ch.hoene.perzist.source.relational.fieldtype.FieldVisitor; import java.util.regex.Pattern; diff --git a/src/com/turtleplayer/controller/TouchHandler.java b/src/com/turtleplayer/controller/TouchHandler.java index d164c8b..fb80dd7 100644 --- a/src/com/turtleplayer/controller/TouchHandler.java +++ b/src/com/turtleplayer/controller/TouchHandler.java @@ -8,9 +8,14 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.filter.FilterSet; +import ch.hoene.perzist.access.filter.FilterVisitor; +import ch.hoene.perzist.access.filter.NotFilter; +import ch.hoene.perzist.access.filter.Operator; import com.turtleplayer.R; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.filter.*; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.filter.DirFilter; import com.turtleplayer.persistance.turtle.filter.TurtleFilterVisitor; diff --git a/src/com/turtleplayer/dirchooser/DirChooser.java b/src/com/turtleplayer/dirchooser/DirChooser.java index ec9450a..46f46e6 100644 --- a/src/com/turtleplayer/dirchooser/DirChooser.java +++ b/src/com/turtleplayer/dirchooser/DirChooser.java @@ -22,7 +22,11 @@ import android.content.Intent; import android.os.Bundle; import android.view.View; -import android.widget.*; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; import com.turtleplayer.R; import java.io.File; diff --git a/src/com/turtleplayer/model/AlbumDigest.java b/src/com/turtleplayer/model/AlbumDigest.java index 4645433..b89bc20 100644 --- a/src/com/turtleplayer/model/AlbumDigest.java +++ b/src/com/turtleplayer/model/AlbumDigest.java @@ -18,7 +18,7 @@ package com.turtleplayer.model; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; public class AlbumDigest implements Album { diff --git a/src/com/turtleplayer/model/ArtistDigest.java b/src/com/turtleplayer/model/ArtistDigest.java index 5457c56..8152b57 100644 --- a/src/com/turtleplayer/model/ArtistDigest.java +++ b/src/com/turtleplayer/model/ArtistDigest.java @@ -18,7 +18,7 @@ package com.turtleplayer.model; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; public class ArtistDigest implements Artist { diff --git a/src/com/turtleplayer/model/FSobject.java b/src/com/turtleplayer/model/FSobject.java index d666366..1e06ba6 100644 --- a/src/com/turtleplayer/model/FSobject.java +++ b/src/com/turtleplayer/model/FSobject.java @@ -18,7 +18,7 @@ package com.turtleplayer.model; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; import java.io.File; diff --git a/src/com/turtleplayer/model/GenreDigest.java b/src/com/turtleplayer/model/GenreDigest.java index 3bcb0b0..cf2c8b0 100644 --- a/src/com/turtleplayer/model/GenreDigest.java +++ b/src/com/turtleplayer/model/GenreDigest.java @@ -18,7 +18,7 @@ package com.turtleplayer.model; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; import com.turtleplayer.util.TurtleUtil; public class GenreDigest implements Genre diff --git a/src/com/turtleplayer/model/InstanceCreator.java b/src/com/turtleplayer/model/InstanceCreator.java index 644f8e2..b112924 100644 --- a/src/com/turtleplayer/model/InstanceCreator.java +++ b/src/com/turtleplayer/model/InstanceCreator.java @@ -1,6 +1,6 @@ package com.turtleplayer.model; -import com.turtleplayer.persistance.framework.creator.Creator; +import ch.hoene.perzist.access.creator.Creator; /** * TURTLE PLAYER diff --git a/src/com/turtleplayer/model/SongDigest.java b/src/com/turtleplayer/model/SongDigest.java index 51e2ab0..ede2b70 100644 --- a/src/com/turtleplayer/model/SongDigest.java +++ b/src/com/turtleplayer/model/SongDigest.java @@ -19,7 +19,7 @@ package com.turtleplayer.model; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; public class SongDigest implements Song { diff --git a/src/com/turtleplayer/persistance/framework/UniqueFieldGetter.java b/src/com/turtleplayer/persistance/framework/UniqueFieldGetter.java deleted file mode 100644 index 1ec809c..0000000 --- a/src/com/turtleplayer/persistance/framework/UniqueFieldGetter.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.turtleplayer.persistance.framework; - -import com.turtleplayer.persistance.source.relational.Field; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface UniqueFieldGetter -{ - Field getUniqueFields(); -} diff --git a/src/com/turtleplayer/persistance/framework/creator/Creator.java b/src/com/turtleplayer/persistance/framework/creator/Creator.java deleted file mode 100644 index 9a687bc..0000000 --- a/src/com/turtleplayer/persistance/framework/creator/Creator.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.turtleplayer.persistance.framework.creator; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface Creator -{ - RESULT create(SOURCE source); -} \ No newline at end of file diff --git a/src/com/turtleplayer/persistance/framework/creator/CreatorForList.java b/src/com/turtleplayer/persistance/framework/creator/CreatorForList.java deleted file mode 100644 index bf71375..0000000 --- a/src/com/turtleplayer/persistance/framework/creator/CreatorForList.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.turtleplayer.persistance.framework.creator; - -import java.util.*; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param Instance type - * @param Source type of row - * @param Source type of table - */ -public abstract class CreatorForList implements ResultCreator, M> -{ - private final Creator creator; - - protected CreatorForList(Creator creator) - { - this.creator = creator; - } - - public List create(M queryResult) - { - List result = new ArrayList(); - - while(hasNext(queryResult)) - { - result.add(creator.create(next(queryResult))); - } - - return result; - } - - protected abstract boolean hasNext(M queryResult); - - protected abstract S next(M queryResult); -} diff --git a/src/com/turtleplayer/persistance/framework/creator/ResultCreator.java b/src/com/turtleplayer/persistance/framework/creator/ResultCreator.java deleted file mode 100644 index d4f4838..0000000 --- a/src/com/turtleplayer/persistance/framework/creator/ResultCreator.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.turtleplayer.persistance.framework.creator; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface ResultCreator extends Creator -{ - -} diff --git a/src/com/turtleplayer/persistance/framework/db/Database.java b/src/com/turtleplayer/persistance/framework/db/Database.java deleted file mode 100644 index 65ddf2b..0000000 --- a/src/com/turtleplayer/persistance/framework/db/Database.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.turtleplayer.persistance.framework.db; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param eg Cursor - * @param eg sql as String - * @param DB object for write operations - */ -public interface Database -{ - abstract I read(Q query, DbReadOp readOp); - abstract int write(DbWriteOp writer, I instance); - - interface DbReadOp - { - public I read(C db); - } - - interface DbWriteOp - { - public int write(D target, I instance); - } -} diff --git a/src/com/turtleplayer/persistance/framework/executor/OperationExecutor.java b/src/com/turtleplayer/persistance/framework/executor/OperationExecutor.java deleted file mode 100644 index dee96e1..0000000 --- a/src/com/turtleplayer/persistance/framework/executor/OperationExecutor.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.turtleplayer.persistance.framework.executor; - -import com.turtleplayer.persistance.framework.db.Database; -import com.turtleplayer.persistance.framework.query.OperationDelete; -import com.turtleplayer.persistance.framework.query.OperationRead; -import com.turtleplayer.persistance.framework.query.OperationInsert; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class OperationExecutor -{ - public static I execute(Database db, final OperationRead operation){ - return db.read(operation.get(), new Database.DbReadOp(){ - public I read(C c) - { - return operation.map(c); - } - }); - } - - public static int execute(Database db, final OperationInsert operation, final I instance){ - return db.write(new Database.DbWriteOp() - { - public int write(D target, - I instance) - { - return operation.insert(target, instance); - } - }, instance); - } - - public static void execute(Database db, final OperationDelete operation, T target){ - db.write(new Database.DbWriteOp() - { - public int write(D target, - T instance) - { - return operation.delete(target, instance); - } - }, target); - } -} diff --git a/src/com/turtleplayer/persistance/framework/filter/FieldFilter.java b/src/com/turtleplayer/persistance/framework/filter/FieldFilter.java deleted file mode 100644 index 2f2621c..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/FieldFilter.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldFilter implements Filter -{ - protected final FieldPersistable field; - protected final Operator operator; - protected final TYPE value; - - public FieldFilter(FieldPersistable field, - Operator operator, - TYPE value) - { - this.field = field; - this.operator = operator; - this.value = value; - } - - public FieldPersistable getField() - { - return field; - } - - public TYPE getValue() - { - return value; - } - - public Operator getOperator() - { - return operator; - } - public R accept(FilterVisitor visitor) - { - return visitor.visit(this); - } - - @Override - public String toString() - { - return getField().getName() + " " + operator.name() + " " + value; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (!(o instanceof FieldFilter)) return false; - - FieldFilter that = (FieldFilter) o; - - if (!field.equals(that.field)) return false; - if (operator != that.operator) return false; - if (value != null ? !value.equals(that.value) : that.value != null) return false; - - return true; - } - - @Override - public int hashCode() - { - int result = field.hashCode(); - result = 31 * result + operator.hashCode(); - result = 31 * result + (value != null ? value.hashCode() : 0); - return result; - } -} diff --git a/src/com/turtleplayer/persistance/framework/filter/Filter.java b/src/com/turtleplayer/persistance/framework/filter/Filter.java deleted file mode 100644 index ea9a23b..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/Filter.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -import java.io.Serializable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface Filter extends Serializable -{ - public abstract R accept(FilterVisitor visitor); -} diff --git a/src/com/turtleplayer/persistance/framework/filter/FilterSet.java b/src/com/turtleplayer/persistance/framework/filter/FilterSet.java deleted file mode 100644 index fe0b790..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/FilterSet.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FilterSet implements Filter -{ - private final Set> filters; - - public FilterSet(Filter... filter) - { - this.filters = new HashSet>(Arrays.asList(filter)); - } - - public FilterSet(Set> filters) - { - this.filters = new HashSet>(filters); - } - - public R accept(FilterVisitor visitor) - { - return visitor.visit(this); - } - - /** - * @return never null, Set can be empty - */ - public Set> getFilters() - { - return filters; - } - - public boolean makesObsolete(Filter filter) - { - return false; //Not implemented yet - } - - @Override - public String toString() - { - return Arrays.deepToString(filters.toArray()); - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (!(o instanceof FilterSet)) return false; - - FilterSet filterSet = (FilterSet) o; - - if (filters != null ? !filters.equals(filterSet.filters) : filterSet.filters != null) return false; - - return true; - } - - @Override - public int hashCode() - { - return filters != null ? filters.hashCode() : 0; - } -} diff --git a/src/com/turtleplayer/persistance/framework/filter/FilterVisitor.java b/src/com/turtleplayer/persistance/framework/filter/FilterVisitor.java deleted file mode 100644 index 87c583b..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/FilterVisitor.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param What the Visitor Produces (can be {@link Void} if nothing gets produced) - */ -public interface FilterVisitor -{ - R visit(FieldFilter fieldFilter); - - R visit(FilterSet filterSet); - - R visit(NotFilter notFilter); -} diff --git a/src/com/turtleplayer/persistance/framework/filter/FilterVisitorGenerified.java b/src/com/turtleplayer/persistance/framework/filter/FilterVisitorGenerified.java deleted file mode 100644 index f69c7c0..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/FilterVisitorGenerified.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class FilterVisitorGenerified implements FilterVisitor -{ - public abstract R visit(FieldFilter fieldFilter, - FieldPersistable field); - - final public R visit(FieldFilter fieldFilter) - { - return visit((FieldFilter) fieldFilter, (FieldPersistable) fieldFilter.getField()); - } -} diff --git a/src/com/turtleplayer/persistance/framework/filter/NotFilter.java b/src/com/turtleplayer/persistance/framework/filter/NotFilter.java deleted file mode 100644 index 032f685..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/NotFilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class NotFilter implements Filter -{ - private final Filter filter; - - public NotFilter(Filter filter) - { - this.filter = filter; - } - - public R accept(FilterVisitor visitor) - { - return visitor.visit(this); - } - - public Filter getFilter() - { - return filter; - } - - @Override - public String toString() - { - return " NOT (" + filter.toString() + ") "; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (!(o instanceof NotFilter)) return false; - - NotFilter notFilter = (NotFilter) o; - - if (filter != null ? !filter.equals(notFilter.filter) : notFilter.filter != null) return false; - - return true; - } - - @Override - public int hashCode() - { - return filter != null ? filter.hashCode() : 0; - } - -} diff --git a/src/com/turtleplayer/persistance/framework/filter/Operator.java b/src/com/turtleplayer/persistance/framework/filter/Operator.java deleted file mode 100644 index b3f1c4e..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/Operator.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public enum Operator -{ - GT, - LT, - GE, - LE, - EQ, - NEQ, - LIKE, - NOT_LIKE -} diff --git a/src/com/turtleplayer/persistance/framework/filter/ResultFilter.java b/src/com/turtleplayer/persistance/framework/filter/ResultFilter.java deleted file mode 100644 index ffce02b..0000000 --- a/src/com/turtleplayer/persistance/framework/filter/ResultFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.turtleplayer.persistance.framework.filter; - -import java.util.Set; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param eg Instance - */ -public interface ResultFilter -{ - Set apply(Set results); -} diff --git a/src/com/turtleplayer/persistance/framework/mapping/Mapping.java b/src/com/turtleplayer/persistance/framework/mapping/Mapping.java deleted file mode 100644 index 3fe30f1..0000000 --- a/src/com/turtleplayer/persistance/framework/mapping/Mapping.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.turtleplayer.persistance.framework.mapping; - -import com.turtleplayer.persistance.framework.creator.Creator; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - * - * Knows how to create I's from C's which are dependent from Q - * Eg: Knows How to create an Instance I from Query result Cursor C from Sql Q - * - * @param eg sql String - * @param resulting instance - * @param eg cursor - */ -public interface Mapping extends Creator, QueryGenerator -{ - Q get(); - I create(C queryResult); -} diff --git a/src/com/turtleplayer/persistance/framework/mapping/QueryGenerator.java b/src/com/turtleplayer/persistance/framework/mapping/QueryGenerator.java deleted file mode 100644 index 8a1ed84..0000000 --- a/src/com/turtleplayer/persistance/framework/mapping/QueryGenerator.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.turtleplayer.persistance.framework.mapping; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface QueryGenerator -{ - Q get(); -} diff --git a/src/com/turtleplayer/persistance/framework/paging/Paging.java b/src/com/turtleplayer/persistance/framework/paging/Paging.java deleted file mode 100644 index 8acd2f9..0000000 --- a/src/com/turtleplayer/persistance/framework/paging/Paging.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.turtleplayer.persistance.framework.paging; - -import com.turtleplayer.persistance.framework.filter.*; -import com.turtleplayer.persistance.framework.sort.*; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class Paging -{ - - public static Filter getFilter(Filter oldFilters, - RESULT instance, - Order order) - { - if(instance != null) - { - return new FilterSet(order.accept(new PagingFilterBuilder(instance)), oldFilters); - } - else - { - return oldFilters; - } - } -} diff --git a/src/com/turtleplayer/persistance/framework/paging/PagingFilterBuilder.java b/src/com/turtleplayer/persistance/framework/paging/PagingFilterBuilder.java deleted file mode 100644 index dbdf428..0000000 --- a/src/com/turtleplayer/persistance/framework/paging/PagingFilterBuilder.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.turtleplayer.persistance.framework.paging; - -import com.turtleplayer.persistance.framework.filter.FieldFilter; -import com.turtleplayer.persistance.framework.filter.Filter; -import com.turtleplayer.persistance.framework.filter.FilterSet; -import com.turtleplayer.persistance.framework.filter.Operator; -import com.turtleplayer.persistance.framework.sort.*; -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class PagingFilterBuilder extends OrderVisitorGenerified> -{ - final RESULT instance; - - public PagingFilterBuilder(RESULT instance) - { - this.instance = instance; - } - - @Override - public Filter visit(FieldOrder fieldOrder, - FieldPersistable field) - { - final Operator op; - - switch(fieldOrder.getOrder()){ - case ASC: - op = Operator.GT; - break; - case DESC: - op = Operator.LT; - break; - default: - throw new IllegalArgumentException(); - } - return new FieldFilter(field, op, field.get(instance)); - } - -// public Filter visit(FieldOrder fieldOrder) -// { -// FieldPersistable field = fieldOrder.getField(); -// -// final Operator op; -// -// switch(fieldOrder.getOrder()){ -// case ASC: -// op = Operator.GT; -// break; -// case DESC: -// op = Operator.LT; -// break; -// default: -// throw new IllegalArgumentException(); -// } -// return new FieldFilter(field, op, field.get(instance)); -// } - - public Filter visit(RandomOrder orderFilter) - { - return null; - } - - public Filter visit(OrderSet orderFilter) - { - if(!orderFilter.isEmpty()){ - Filter filterSet = new FilterSet(); - for( int i = 0; i < orderFilter.getOrders().size() -1; i++) - { - final Filter finalFilterSet = filterSet; - filterSet = orderFilter.getOrders().get(i).accept(new OrderVisitorGenerified>() - { - public Filter visit(RandomOrder orderFilter) - { - // :-) - return null; - } - - @Override - public Filter visit(FieldOrder fieldOrder, - FieldPersistable field) - { - return new FilterSet( - finalFilterSet, - new FieldFilter(fieldOrder.getField(), Operator.EQ, field.get(instance))); - } - - public Filter visit(OrderSet orderFilter) - { - return this.visit(orderFilter); - } - }); - } - - return new FilterSet(filterSet, orderFilter.getOrders().get(orderFilter.getOrders().size()-1).accept(this)); - } - else - { - return null; - } - } - -} diff --git a/src/com/turtleplayer/persistance/framework/query/OperationDelete.java b/src/com/turtleplayer/persistance/framework/query/OperationDelete.java deleted file mode 100644 index 5655c42..0000000 --- a/src/com/turtleplayer/persistance/framework/query/OperationDelete.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.turtleplayer.persistance.framework.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface OperationDelete -{ - int delete(D db, T target); -} diff --git a/src/com/turtleplayer/persistance/framework/query/OperationInsert.java b/src/com/turtleplayer/persistance/framework/query/OperationInsert.java deleted file mode 100644 index f341200..0000000 --- a/src/com/turtleplayer/persistance/framework/query/OperationInsert.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.turtleplayer.persistance.framework.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param write target eg SQLiteDb - * @param Object Type of the write information - */ -public interface OperationInsert -{ - int insert(D db, I instance); -} diff --git a/src/com/turtleplayer/persistance/framework/query/OperationRead.java b/src/com/turtleplayer/persistance/framework/query/OperationRead.java deleted file mode 100644 index 21b857c..0000000 --- a/src/com/turtleplayer/persistance/framework/query/OperationRead.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.turtleplayer.persistance.framework.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param write target eg SQLiteDb - * @param Object type that knows how to do the operation - * @param Object Type of the write information - */ -public interface OperationRead -{ - I map(R dbResult); - - Q get(); -} diff --git a/src/com/turtleplayer/persistance/framework/query/Query.java b/src/com/turtleplayer/persistance/framework/query/Query.java deleted file mode 100644 index f7df6eb..0000000 --- a/src/com/turtleplayer/persistance/framework/query/Query.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.turtleplayer.persistance.framework.query; - -import com.turtleplayer.persistance.framework.filter.Filter; -import com.turtleplayer.persistance.framework.filter.FilterVisitor; -import com.turtleplayer.persistance.framework.sort.Order; -import com.turtleplayer.persistance.framework.sort.OrderVisitor; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class Query implements FilterVisitor, OperationRead, OrderVisitor -{ - private final Filter filter; - private final Order order; - - protected Query() - { - this.filter = null; - order = null; - } - - protected Query(Filter filter) - { - this.filter = filter; - order = null; - } - - protected Query(Order order) - { - this.order = order; - this.filter = null; - } - - public Query(Filter filter, Order order) - { - this.filter = filter; - this.order = order; - } - - /** - * @return can be null - */ - public Filter getFilter() - { - return filter; - } - - /** - * @return can be null - */ - public Order getOrder() - { - return order; - } -} diff --git a/src/com/turtleplayer/persistance/framework/sort/FieldOrder.java b/src/com/turtleplayer/persistance/framework/sort/FieldOrder.java deleted file mode 100644 index 899daea..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/FieldOrder.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -import com.turtleplayer.persistance.framework.filter.FieldFilter; -import com.turtleplayer.persistance.framework.filter.Filter; -import com.turtleplayer.persistance.framework.filter.Operator; -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -import java.util.ArrayList; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldOrder implements Order -{ - private final FieldPersistable field; - private final SortOrder order; - - public FieldOrder(FieldPersistable field, - SortOrder order) - { - this.field = field; - this.order = order; - } - - public FieldPersistable getField() - { - return field; - } - - public SortOrder getOrder() - { - return order; - } - - public R accept(OrderVisitor visitor) - { - return visitor.visit(this); - } - - @Override - public String toString() - { - return getField().getName() + " " + order; - } - - public Filter asFilter(TYPE value, Operator op){ - return new FieldFilter(field, op, value); - } - - public static Order getMultiFieldOrder(SortOrder order, - FieldPersistable... fields) - { - List> orders = new ArrayList>(); - for(FieldPersistable field : fields) - { - orders.add(new FieldOrder(field, order)); - } - return new OrderSet(orders); - } -} diff --git a/src/com/turtleplayer/persistance/framework/sort/Order.java b/src/com/turtleplayer/persistance/framework/sort/Order.java deleted file mode 100644 index 735d519..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/Order.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param eg sql as String - */ -public interface Order -{ - R accept(OrderVisitor visitor); -} diff --git a/src/com/turtleplayer/persistance/framework/sort/OrderSet.java b/src/com/turtleplayer/persistance/framework/sort/OrderSet.java deleted file mode 100644 index ba974ab..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/OrderSet.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -import java.util.*; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class OrderSet implements Order -{ - private final List> orders = new ArrayList>(); - - public OrderSet(Order... order) - { - Collections.addAll(orders, order); - } - - public OrderSet(List> orders) - { - this.orders.addAll(orders); - } - - /** - * @return never null, Set can be empty - */ - public List> getOrders() - { - return orders; - } - - public R accept(OrderVisitor visitor) - { - return visitor.visit(this); - } - - public OrderSet removeLast() - { - if(orders.size() > 1) - { - return new OrderSet(orders.subList(0, orders.size()-1)); - } - else - { - return new OrderSet(new ArrayList>()); - } - } - - public boolean isEmpty() - { - return orders.isEmpty(); - } - - @Override - public String toString() - { - return Arrays.deepToString(orders.toArray()); - } -} diff --git a/src/com/turtleplayer/persistance/framework/sort/OrderVisitor.java b/src/com/turtleplayer/persistance/framework/sort/OrderVisitor.java deleted file mode 100644 index 2448aa5..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/OrderVisitor.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface OrderVisitor -{ - R visit(FieldOrder fieldOrder); - - R visit(RandomOrder orderFilter); - - R visit(OrderSet orderFilter); -} diff --git a/src/com/turtleplayer/persistance/framework/sort/OrderVisitorGenerified.java b/src/com/turtleplayer/persistance/framework/sort/OrderVisitorGenerified.java deleted file mode 100644 index 0f73bd7..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/OrderVisitorGenerified.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class OrderVisitorGenerified implements OrderVisitor -{ - public abstract R visit(FieldOrder fieldOrder, - FieldPersistable field); - - final public R visit(FieldOrder fieldOrder) - { - return visit((FieldOrder)fieldOrder, (FieldPersistable)fieldOrder.getField()); - } -} diff --git a/src/com/turtleplayer/persistance/framework/sort/RandomOrder.java b/src/com/turtleplayer/persistance/framework/sort/RandomOrder.java deleted file mode 100644 index 2930744..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/RandomOrder.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class RandomOrder implements Order -{ - - public R accept(OrderVisitor visitor) - { - return visitor.visit(this); - } -} diff --git a/src/com/turtleplayer/persistance/framework/sort/SortOrder.java b/src/com/turtleplayer/persistance/framework/sort/SortOrder.java deleted file mode 100644 index 63e0150..0000000 --- a/src/com/turtleplayer/persistance/framework/sort/SortOrder.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.turtleplayer.persistance.framework.sort; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public enum SortOrder -{ - ASC, - DESC -} diff --git a/src/com/turtleplayer/persistance/source/relational/Field.java b/src/com/turtleplayer/persistance/source/relational/Field.java deleted file mode 100644 index 7e8b334..0000000 --- a/src/com/turtleplayer/persistance/source/relational/Field.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.turtleplayer.persistance.source.relational; - -import java.io.Serializable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class Field implements Serializable -{ - private final String name; - - public Field(String name) - { - this.name = name; - } - - public String getName() - { - return name; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Field field = (Field) o; - - if (!name.equals(field.name)) return false; - - return true; - } - - @Override - public int hashCode() - { - return name.hashCode(); - } -} diff --git a/src/com/turtleplayer/persistance/source/relational/FieldPersistable.java b/src/com/turtleplayer/persistance/source/relational/FieldPersistable.java deleted file mode 100644 index 979f19d..0000000 --- a/src/com/turtleplayer/persistance/source/relational/FieldPersistable.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.turtleplayer.persistance.source.relational; - -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldVisitor; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class FieldPersistable extends Field -{ - private final Creator mapping; - - protected FieldPersistable(String name, - Creator mapping) - { - super(name); - this.mapping = mapping; - } - - public FieldPersistable(FieldPersistable fieldPersistable) - { - this(fieldPersistable.getName(), fieldPersistable.mapping); - } - - public TYPE get(RESULT type) - { - return mapping.create(type); - } - - public abstract R accept(FieldVisitor visitor); -} diff --git a/src/com/turtleplayer/persistance/source/relational/Table.java b/src/com/turtleplayer/persistance/source/relational/Table.java deleted file mode 100644 index ff57df8..0000000 --- a/src/com/turtleplayer/persistance/source/relational/Table.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.turtleplayer.persistance.source.relational; - -import com.turtleplayer.util.Shorty; - -import java.util.Set; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class Table implements View -{ - final String name; - - public Table(String name) - { - this.name = name; - } - - public String getName() - { - return name; - } - - public Set getTables() - { - return Shorty.oneElementSet(this); - } -} diff --git a/src/com/turtleplayer/persistance/source/relational/View.java b/src/com/turtleplayer/persistance/source/relational/View.java deleted file mode 100644 index 084b839..0000000 --- a/src/com/turtleplayer/persistance/source/relational/View.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.turtleplayer.persistance.source.relational; - -import java.io.Serializable; -import java.util.List; -import java.util.Set; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface View extends Serializable -{ - public Set getTables(); - - public List getFields(); -} diff --git a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsDouble.java b/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsDouble.java deleted file mode 100644 index abeaa6e..0000000 --- a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsDouble.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.turtleplayer.persistance.source.relational.fieldtype; - -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldPersistableAsDouble extends FieldPersistable -{ - public FieldPersistableAsDouble(String name, - Creator mapping) - { - super(name, mapping); - } - - public FieldPersistableAsDouble(FieldPersistable fieldPersistable) - { - super(fieldPersistable); - } - - @Override - public R accept(FieldVisitor visitor) - { - return visitor.visit(this); - } -} diff --git a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsInteger.java b/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsInteger.java deleted file mode 100644 index f141b23..0000000 --- a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsInteger.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.turtleplayer.persistance.source.relational.fieldtype; - -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldPersistableAsInteger extends FieldPersistable -{ - public FieldPersistableAsInteger(String name, - Creator mapping) - { - super(name, mapping); - } - - public FieldPersistableAsInteger(FieldPersistable fieldPersistable) - { - super(fieldPersistable); - } - - @Override - public R accept(FieldVisitor visitor) - { - return visitor.visit(this); - } -} diff --git a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsString.java b/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsString.java deleted file mode 100644 index 29f0612..0000000 --- a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldPersistableAsString.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.turtleplayer.persistance.source.relational.fieldtype; - -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.FieldPersistable; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldPersistableAsString extends FieldPersistable -{ - public FieldPersistableAsString(String name, - Creator mapping) - { - super(name, mapping); - } - - public FieldPersistableAsString(FieldPersistable fieldPersistable) - { - super(fieldPersistable); - } - - @Override - public R accept(FieldVisitor visitor) - { - return visitor.visit(this); - } -} diff --git a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldVisitor.java b/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldVisitor.java deleted file mode 100644 index f724cf7..0000000 --- a/src/com/turtleplayer/persistance/source/relational/fieldtype/FieldVisitor.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.turtleplayer.persistance.source.relational.fieldtype; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param What the Visitor Produces (can be {@link Void} if nothing gets produced) - */ -public interface FieldVisitor -{ - R visit(FieldPersistableAsString field); - - R visit(FieldPersistableAsDouble field); - - R visit(FieldPersistableAsInteger field); - -} diff --git a/src/com/turtleplayer/persistance/source/relational/fieldtype/ToStringFieldVisitor.java b/src/com/turtleplayer/persistance/source/relational/fieldtype/ToStringFieldVisitor.java deleted file mode 100644 index 2907d1a..0000000 --- a/src/com/turtleplayer/persistance/source/relational/fieldtype/ToStringFieldVisitor.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.turtleplayer.persistance.source.relational.fieldtype; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class ToStringFieldVisitor implements FieldVisitor -{ - final RESULT result; - - public ToStringFieldVisitor(RESULT result) - { - this.result = result; - } - - public String visit(FieldPersistableAsString field) - { - return field.get(result); - } - - public String visit(FieldPersistableAsDouble field) - { - return field.get(result).toString(); - } - - public String visit(FieldPersistableAsInteger field) - { - return field.get(result).toString(); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/Counter.java b/src/com/turtleplayer/persistance/source/sql/Counter.java deleted file mode 100644 index 58089c8..0000000 --- a/src/com/turtleplayer/persistance/source/sql/Counter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.sql.query.Select; -import com.turtleplayer.persistance.source.sql.query.Sql; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class Counter implements Mapping -{ - private final Table table; - - public Counter(Table table) - { - this.table = table; - } - - public Select get() - { - return new Select(table, Select.SelectMethod.COUNT, Sql.FIELD_PSEUDO_STAR); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/First.java b/src/com/turtleplayer/persistance/source/sql/First.java deleted file mode 100644 index fc03bcf..0000000 --- a/src/com/turtleplayer/persistance/source/sql/First.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.sql.query.Limit; -import com.turtleplayer.persistance.source.sql.query.Select; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class First implements Mapping -{ - private final Table table; - private final Creator creator; - - public First(Table table, - Creator creator) - { - this.table = table; - this.creator = creator; - } - - public Select get() - { - Select select = new Select(table); - select.setLimit(new Limit(1)); - return select; - } - - public I create(Cursor queryResult) - { - if(queryResult.moveToFirst()){ - return creator.create(queryResult); - } - else - { - return null; - } - - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/Limited.java b/src/com/turtleplayer/persistance/source/sql/Limited.java deleted file mode 100644 index a29af42..0000000 --- a/src/com/turtleplayer/persistance/source/sql/Limited.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.sql.query.Limit; -import com.turtleplayer.persistance.source.sql.query.Select; - -import java.util.ArrayList; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class Limited extends First> -{ - private final int limit; - - public Limited(Table table, - Creator, Cursor> creator, - int limit) - { - super(table, creator); - this.limit = limit; - } - - public Select get() - { - Select select = super.get(); - select.setLimit(new Limit(limit)); - return select; - } - - public List create(Cursor queryResult) - { - List result = super.create(queryResult); - return result == null ? new ArrayList() : result; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/MappingDistinct.java b/src/com/turtleplayer/persistance/source/sql/MappingDistinct.java deleted file mode 100644 index 388e84a..0000000 --- a/src/com/turtleplayer/persistance/source/sql/MappingDistinct.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.CreatorForList; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Field; -import com.turtleplayer.persistance.source.relational.View; -import com.turtleplayer.persistance.source.sql.query.Select; - -import java.util.Collection; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class MappingDistinct implements Mapping, Cursor> -{ - private final PROJECTION view; - private final List fields; - private final CreatorForList creator; - - public MappingDistinct(PROJECTION view, - CreatorForList creator, - TARGET target) - { - this.view = view; - this.fields = target.getFields(); - this.creator = creator; - } - - public Select get() - { - return new Select(view, Select.SelectMethod.DISTINCT, fields.toArray(new Field[fields.size()])); - } - - public List create(Cursor queryResult) - { - return creator.create(queryResult); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/MappingTable.java b/src/com/turtleplayer/persistance/source/sql/MappingTable.java deleted file mode 100644 index c7ccc7e..0000000 --- a/src/com/turtleplayer/persistance/source/sql/MappingTable.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.CreatorForList; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.sql.query.Select; - -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class MappingTable implements Mapping, Cursor> -{ - private final Table table; - private final CreatorForList creator; - - public MappingTable(Table table, CreatorForList creator) - { - this.table = table; - this.creator = creator; - } - - public Select get() - { - return new Select(table); - } - - public List create(Cursor queryResult) - { - return creator.create(queryResult); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/QueryGeneratorTable.java b/src/com/turtleplayer/persistance/source/sql/QueryGeneratorTable.java deleted file mode 100644 index 954f174..0000000 --- a/src/com/turtleplayer/persistance/source/sql/QueryGeneratorTable.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.turtleplayer.persistance.source.sql; - -import android.content.ContentValues; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Table; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class QueryGeneratorTable implements Mapping -{ - final Table table; - - public QueryGeneratorTable(Table table) - { - this.table = table; - } - - public Table get() - { - return table; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/BoolOperator.java b/src/com/turtleplayer/persistance/source/sql/query/BoolOperator.java deleted file mode 100644 index 166956f..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/BoolOperator.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public enum BoolOperator implements SqlFragment -{ - AND(" and "), - OR(" and "); - - private final String sql; - - private BoolOperator(String sql) - { - this.sql = sql; - } - - - public String toSql() - { - return sql; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/FieldsPart.java b/src/com/turtleplayer/persistance/source/sql/query/FieldsPart.java deleted file mode 100644 index a8cb7b1..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/FieldsPart.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.source.relational.Field; - -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class FieldsPart implements SqlFragment -{ - private final List fields; - - public FieldsPart(List fields) - { - this.fields = fields; - } - - public String toSql() - { - String[] fieldNames = new String[fields.size()]; - int i = 0; - for(Field field : fields) - { - fieldNames[i++] = field.getName(); - } - return Helper.getSeparatedList(", ", fieldNames); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/Helper.java b/src/com/turtleplayer/persistance/source/sql/query/Helper.java deleted file mode 100644 index 58f9740..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/Helper.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public abstract class Helper -{ - public static String getSeparatedList(String separator, String... values){ - - String result = ""; - - for(String value : values) - { - result += value + separator; - } - return removeLast(result, separator); - } - - public static String getSeparatedList(String separator, SqlFragment... fragments){ - - String result = ""; - - for(SqlFragment fragment : fragments) - { - result += fragment.toSql() + separator; - } - return removeLast(result, separator); - } - - public static String removeLast(String s, String pattern){ - return s.endsWith(pattern) ? - s.substring(0, s.length() - pattern.length()) : - s; //cut off last pattern - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/Limit.java b/src/com/turtleplayer/persistance/source/sql/query/Limit.java deleted file mode 100644 index eb8307a..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/Limit.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class Limit implements SqlFragment -{ - final int limit; - - public Limit(int limit) - { - this.limit = limit; - } - - public String toSql() - { - return " LIMIT " + limit + " "; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/Operator.java b/src/com/turtleplayer/persistance/source/sql/query/Operator.java deleted file mode 100644 index 5a75cd9..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/Operator.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public enum Operator -{ - GT(" > "), - LT(" < "), - GE(" >= "), - LE(" <= "), - EQ(" = "), - NEQ(" != "), - LIKE(" LIKE "), - NOT_LIKE(" NOT LIKE "); - - final String string; - - private Operator(String op) - { - this.string = op; - } - - @Override - public String toString() - { - return string; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/OrderClause.java b/src/com/turtleplayer/persistance/source/sql/query/OrderClause.java deleted file mode 100644 index 51dbf1b..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/OrderClause.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * Marker Interface - */ -public interface OrderClause extends SqlFragment, OrderClausePart -{ - OrderClause apply(OrderClause orderClause); -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/OrderClauseFields.java b/src/com/turtleplayer/persistance/source/sql/query/OrderClauseFields.java deleted file mode 100644 index fce87dc..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/OrderClauseFields.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class OrderClauseFields implements OrderClause -{ - private final String sql; - - public OrderClauseFields(OrderClausePart... parts) - { - sql = Helper.getSeparatedList(" , ", parts); - } - - private OrderClauseFields(OrderClause orderClause, OrderClause orderClause2) - { - sql = orderClause.toSql() + " , " + orderClause2.toSql(); - } - - public String toSql(){ - return sql; - } - - public OrderClause apply(OrderClause orderClause) - { - return new OrderClauseFields(this, orderClause); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/OrderClausePart.java b/src/com/turtleplayer/persistance/source/sql/query/OrderClausePart.java deleted file mode 100644 index 9af795b..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/OrderClausePart.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface OrderClausePart extends SqlFragment -{ -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/OrderClausePartField.java b/src/com/turtleplayer/persistance/source/sql/query/OrderClausePartField.java deleted file mode 100644 index f034583..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/OrderClausePartField.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.framework.sort.SortOrder; -import com.turtleplayer.persistance.source.relational.Field; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class OrderClausePartField implements OrderClausePart -{ - final Field field; - final SqlOrder order; - - public OrderClausePartField(Field field, - SortOrder order) - { - this.field = field; - - switch (order) - { - case ASC: - this.order = SqlOrder.ASC; - break; - case DESC: - this.order = SqlOrder.DESC; - break; - default: - this.order = SqlOrder.ASC; - } - } - - public String toSql() - { - return " " + field.getName() + " " + order.toSql() + " "; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/OrderClauseRandom.java b/src/com/turtleplayer/persistance/source/sql/query/OrderClauseRandom.java deleted file mode 100644 index da3b17f..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/OrderClauseRandom.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPLS - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class OrderClauseRandom implements OrderClause -{ - public String toSql() - { - return " RANDOM() "; - } - - public OrderClause apply(OrderClause orderClause) - { - throw new RuntimeException("random order cant be chained"); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/Select.java b/src/com/turtleplayer/persistance/source/sql/query/Select.java deleted file mode 100644 index 768aaaa..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/Select.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.source.relational.Field; -import com.turtleplayer.persistance.source.relational.View; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class Select implements Sql -{ - private final String sql; - private WhereClause whereClause; - private OrderClause orderClause; - private Limit limit; - - public enum SelectMethod{ - NORMAL, - COUNT, - DISTINCT - } - - public Select(View view) - { - this.sql = "SELECT * FROM " + getTableList(view); - } - - public Select(View view, Field... fields) - { - this(view, SelectMethod.NORMAL, fields); - } - - public Select(View view, SelectMethod selectMethod, Field... fields) - { - this.sql = "SELECT " + - getFieldsList(selectMethod, fields) + - " FROM " + getTableList(view); - } - - private String getFieldsList(SelectMethod selectMethod, Field... fields) - { - switch (selectMethod) - { - case NORMAL: - return new FieldsPart(Arrays.asList(fields)).toSql(); - case COUNT: - return " COUNT(" + new FieldsPart(Arrays.asList(fields)).toSql() + ")"; - case DISTINCT: - return " DISTINCT " + new FieldsPart(Arrays.asList(fields)).toSql() + " "; - default: - throw new RuntimeException("Implement SelectMethod " + selectMethod.name()); - } - } - - private String getTableList(View view) - { - return new TablesPart(view.getTables()).toSql(); - } - - public String toSql() - { - return sql - + (whereClause != null ? " WHERE " + whereClause.toSql() : "") - + (orderClause != null ? " ORDER BY " + orderClause.toSql() : "") - + (limit != null ? limit.toSql() : ""); - } - - public List getParams() - { - List params = new ArrayList(); - params.addAll(whereClause != null ? whereClause.getParams() : new ArrayList()); - return params; - } - - public void setWhereClause(WhereClause whereClause) - { - this.whereClause = whereClause; - } - - public void setOrderClause(OrderClause orderClause) - { - this.orderClause = orderClause; - } - - public void setLimit(Limit limit){ - this.limit = limit; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/Sql.java b/src/com/turtleplayer/persistance/source/sql/query/Sql.java deleted file mode 100644 index e00b231..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/Sql.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.source.relational.Field; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - * - * Marker Interface for a complete, executable Sql - */ - -public interface Sql extends SqlPart -{ - public static final Field FIELD_PSEUDO_STAR = new Field("*"); -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/SqlFragment.java b/src/com/turtleplayer/persistance/source/sql/query/SqlFragment.java deleted file mode 100644 index b0427b6..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/SqlFragment.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface SqlFragment -{ - String toSql(); -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/SqlOrder.java b/src/com/turtleplayer/persistance/source/sql/query/SqlOrder.java deleted file mode 100644 index 77efd07..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/SqlOrder.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public enum SqlOrder -{ - ASC(" ASC "), - DESC(" DESC "); - - final String sql; - - private SqlOrder(String sql) - { - this.sql = sql; - } - - - public String toSql() - { - return sql; - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/SqlPart.java b/src/com/turtleplayer/persistance/source/sql/query/SqlPart.java deleted file mode 100644 index beab180..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/SqlPart.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface SqlPart extends SqlFragment -{ - List getParams(); -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/TablesPart.java b/src/com/turtleplayer/persistance/source/sql/query/TablesPart.java deleted file mode 100644 index 864a04c..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/TablesPart.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.source.relational.Table; - -import java.util.Set; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class TablesPart implements SqlFragment -{ - private final Set tables; - - public TablesPart(Set tables) - { - this.tables = tables; - } - - public String toSql() - { - String[] tableNames = new String[tables.size()]; - int i = 0; - for(Table table : tables) - { - tableNames[i++] = table.getName(); - } - return Helper.getSeparatedList(", ", tableNames); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/WhereClause.java b/src/com/turtleplayer/persistance/source/sql/query/WhereClause.java deleted file mode 100644 index f945358..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/WhereClause.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * Immutable - */ -public class WhereClause implements WhereClausePart -{ - private List params = new ArrayList(); - private final String sql; - - public WhereClause(WhereClauseField part) - { - sql = part.toSql(); - params.addAll(part.getParams()); - } - - private WhereClause(String sql, List params) - { - this.sql = sql; - this.params = params; - } - - public WhereClause apply(BoolOperator op, WhereClausePart part){ - - if(part == null) - { - return this; - } - List newParams = new ArrayList(params); - newParams.addAll(part.getParams()); - - String newSql = " (" + sql + ") " + op + " (" + part.toSql() + ") "; - return new WhereClause(newSql, newParams); - } - - public String toSql(){ - return sql; - } - - public List getParams() - { - return Collections.unmodifiableList(params); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/WhereClauseField.java b/src/com/turtleplayer/persistance/source/sql/query/WhereClauseField.java deleted file mode 100644 index 6ab80cf..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/WhereClauseField.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -import com.turtleplayer.persistance.source.relational.Field; - -import java.util.Arrays; -import java.util.List; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class WhereClauseField implements WhereClausePart -{ - - final Field field; - final Object value; - final Operator op; - - public WhereClauseField(Field field, - Object value, - Operator op) - { - this.field = field; - this.value = value; - this.op = op; - } - - public String toSql() - { - return " " + field.getName() + op + " ? "; - } - - public List getParams() - { - return Arrays.asList(value); - } -} diff --git a/src/com/turtleplayer/persistance/source/sql/query/WhereClausePart.java b/src/com/turtleplayer/persistance/source/sql/query/WhereClausePart.java deleted file mode 100644 index dc54876..0000000 --- a/src/com/turtleplayer/persistance/source/sql/query/WhereClausePart.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.turtleplayer.persistance.source.sql.query; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public interface WhereClausePart extends SqlPart -{ -} diff --git a/src/com/turtleplayer/persistance/source/sqlite/CounterSqlite.java b/src/com/turtleplayer/persistance/source/sqlite/CounterSqlite.java deleted file mode 100644 index 4b8130f..0000000 --- a/src/com/turtleplayer/persistance/source/sqlite/CounterSqlite.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.turtleplayer.persistance.source.sqlite; - -import android.database.Cursor; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.sql.Counter; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class CounterSqlite extends Counter -{ - public CounterSqlite(Table table) - { - super(table); - } - - public Integer create(Cursor queryResult) - { - queryResult.moveToFirst(); - return queryResult.getInt(0); - } -} diff --git a/src/com/turtleplayer/persistance/source/sqlite/CreatorForListSqlite.java b/src/com/turtleplayer/persistance/source/sqlite/CreatorForListSqlite.java deleted file mode 100644 index b789815..0000000 --- a/src/com/turtleplayer/persistance/source/sqlite/CreatorForListSqlite.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.turtleplayer.persistance.source.sqlite; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.CreatorForList; -import com.turtleplayer.persistance.framework.creator.ResultCreator; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -/** - * @param resulting set contains instance I - */ -public class CreatorForListSqlite extends CreatorForList -{ - public CreatorForListSqlite(ResultCreator creator) - { - super(creator); - } - - @Override - public boolean hasNext(Cursor queryResult) - { - return !queryResult.isLast() && !queryResult.isAfterLast(); - } - - @Override - public Cursor next(Cursor queryResult) - { - queryResult.moveToNext(); - return queryResult; - } -} diff --git a/src/com/turtleplayer/persistance/source/sqlite/DeleteTableContentSqlLite.java b/src/com/turtleplayer/persistance/source/sqlite/DeleteTableContentSqlLite.java deleted file mode 100644 index 8cc0cbc..0000000 --- a/src/com/turtleplayer/persistance/source/sqlite/DeleteTableContentSqlLite.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.turtleplayer.persistance.source.sqlite; - -import android.database.sqlite.SQLiteDatabase; -import com.turtleplayer.persistance.framework.query.OperationDelete; -import com.turtleplayer.persistance.source.relational.Table; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class DeleteTableContentSqlLite implements OperationDelete -{ - public int delete(SQLiteDatabase db, - Table target) - { - return db.delete(target.getName(), null, null); - } -} diff --git a/src/com/turtleplayer/persistance/source/sqlite/InsertOperationSqlLite.java b/src/com/turtleplayer/persistance/source/sqlite/InsertOperationSqlLite.java deleted file mode 100644 index 6ef8be4..0000000 --- a/src/com/turtleplayer/persistance/source/sqlite/InsertOperationSqlLite.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.turtleplayer.persistance.source.sqlite; - -import android.content.ContentValues; -import android.database.sqlite.SQLiteDatabase; -import com.turtleplayer.persistance.framework.query.OperationInsert; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.source.relational.Table; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class InsertOperationSqlLite implements OperationInsert -{ - private final Mapping mapping; - - public InsertOperationSqlLite(Mapping mapping) - { - this.mapping = mapping; - } - - public int insert(final SQLiteDatabase db, I instance) - { - long newRowId = db.insert(mapping.get().getName(), null, mapping.create(instance)); - return (newRowId < 0) ? 0 : 1; - } -} diff --git a/src/com/turtleplayer/persistance/source/sqlite/QuerySqlite.java b/src/com/turtleplayer/persistance/source/sqlite/QuerySqlite.java deleted file mode 100644 index 934c9b2..0000000 --- a/src/com/turtleplayer/persistance/source/sqlite/QuerySqlite.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.turtleplayer.persistance.source.sqlite; - -import android.database.Cursor; -import com.turtleplayer.persistance.framework.filter.*; -import com.turtleplayer.persistance.framework.query.Query; -import com.turtleplayer.persistance.framework.mapping.Mapping; -import com.turtleplayer.persistance.framework.sort.FieldOrder; -import com.turtleplayer.persistance.framework.sort.Order; -import com.turtleplayer.persistance.framework.sort.OrderSet; -import com.turtleplayer.persistance.framework.sort.RandomOrder; -import com.turtleplayer.persistance.source.relational.FieldPersistable; -import com.turtleplayer.persistance.source.sql.query.*; -import com.turtleplayer.persistance.source.sql.query.Operator; - -/** - * TURTLE PLAYER - *

- * Licensed under MIT & GPL - *

- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - *

- * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -public class QuerySqlite extends Query -{ - private final Mapping mapping; - - public QuerySqlite(Mapping mapping) - { - this.mapping = mapping; - } - - public QuerySqlite(Filter filter, Mapping mapping) - { - super(filter); - this.mapping = mapping; - } - - public QuerySqlite(Order order, Mapping mapping) - { - super(order); - this.mapping = mapping; - } - - public QuerySqlite(Filter filter, Order order, Mapping mapping) - { - super(filter, order); - - this.mapping = mapping; - } - - public Select get() - { - Select sql = mapping.get(); - - if(getFilter() != null){ - sql.setWhereClause(getFilter().accept(this)); - } - - if(getOrder() != null){ - sql.setOrderClause(getOrder().accept(this)); - } - - return sql; - } - - public RESULT map(final Cursor cursor) - { - return mapping.create(cursor); - } - - public WhereClause visit(FieldFilter fieldFilter) - { - final Operator operator; - switch (fieldFilter.getOperator()){ - case EQ: - operator = Operator.EQ; - break; - case NEQ: - operator = Operator.NEQ; - break; - case GE: - operator = Operator.GE; - break; - case GT: - operator = Operator.GT; - break; - case LE: - operator = Operator.LE; - break; - case LIKE: - operator = Operator.LIKE; - break; - case NOT_LIKE: - operator = Operator.NOT_LIKE; - break; - case LT: - operator = Operator.LT; - break; - default: - throw new IllegalArgumentException(); - } - - return new WhereClause(new WhereClauseField(fieldFilter.getField(), fieldFilter.getValue(), operator)); - } - - public OrderClause visit(RandomOrder orderFilter) - { - return new OrderClauseRandom(); - } - - public WhereClause visit(FilterSet filterSet) - { - WhereClause whereClause = null; - for(Filter filter : filterSet.getFilters()){ - if(whereClause == null) - { - whereClause = filter.accept(this); - } - else - { - whereClause = whereClause.apply(BoolOperator.AND, filter.accept(this)); - } - } - return whereClause; - } - - - public WhereClause visit(NotFilter notFilter) - { - Filter inversedFilter = notFilter.getFilter().accept(new FilterVisitorGenerified>() - { - - @Override - public Filter visit(FieldFilter fieldFilter, - FieldPersistable field) - { - final com.turtleplayer.persistance.framework.filter.Operator inversedOp; - switch (fieldFilter.getOperator()) - { - case NEQ: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.EQ; - break; - case EQ: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.NEQ; - break; - case GE: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.LT; - break; - case GT: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.LE; - break; - case LE: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.GT; - break; - case LIKE: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.NOT_LIKE; - break; - case NOT_LIKE: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.LIKE; - break; - case LT: - inversedOp = com.turtleplayer.persistance.framework.filter.Operator.GE; - break; - default: - throw new RuntimeException("Not supported Operator"); - } - return new FieldFilter(fieldFilter.getField(), inversedOp, fieldFilter.getValue()); - } - - public Filter visit(FilterSet filterSet) - { - for(Filter f : filterSet.getFilters()) - { - f.accept(this); - } - return null; - } - - public Filter visit(NotFilter notFilter) - { - return notFilter.getFilter(); - } - }); - return inversedFilter.accept(this); - } - - public OrderClause visit(FieldOrder fieldOrder) - { - return new OrderClauseFields(new OrderClausePartField(fieldOrder.getField(), fieldOrder.getOrder())); - } - - public OrderClause visit(OrderSet clauseSet) - { - OrderClause orderClause = null; - for(Order order : clauseSet.getOrders()){ - if(orderClause == null) - { - orderClause = order.accept(this); - } - else - { - orderClause = orderClause.apply(order.accept(this)); - } - } - return orderClause; - } -} diff --git a/src/com/turtleplayer/persistance/turtle/FileBase.java b/src/com/turtleplayer/persistance/turtle/FileBase.java index 68bfd62..ca1548d 100644 --- a/src/com/turtleplayer/persistance/turtle/FileBase.java +++ b/src/com/turtleplayer/persistance/turtle/FileBase.java @@ -1,7 +1,11 @@ package com.turtleplayer.persistance.turtle; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.filter.Filter; +import ch.hoene.perzist.access.filter.Filter; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.Artist; +import com.turtleplayer.model.Genre; +import com.turtleplayer.model.Song; +import com.turtleplayer.model.Track; import com.turtleplayer.persistance.turtle.db.structure.Tables; import java.util.Collection; diff --git a/src/com/turtleplayer/persistance/turtle/FsReader.java b/src/com/turtleplayer/persistance/turtle/FsReader.java index 079be04..cb66133 100644 --- a/src/com/turtleplayer/persistance/turtle/FsReader.java +++ b/src/com/turtleplayer/persistance/turtle/FsReader.java @@ -20,32 +20,47 @@ package com.turtleplayer.persistance.turtle; import android.util.Log; +import ch.hoene.perzist.access.executor.OperationExecutor; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Operator; +import ch.hoene.perzist.android.FirstSqlLite; +import ch.hoene.perzist.android.QuerySqlite; +import ch.hoene.perzist.android.ReadOperationSqlLite; +import ch.hoene.perzist.util.Shorty; import com.mpatric.mp3agic.ID3v1; import com.mpatric.mp3agic.InvalidDataException; import com.mpatric.mp3agic.Mp3File; import com.mpatric.mp3agic.UnsupportedTagException; import com.turtleplayer.common.filefilter.FileFilters; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.filter.FieldFilter; -import com.turtleplayer.persistance.framework.filter.Operator; -import com.turtleplayer.persistance.source.sql.First; -import com.turtleplayer.persistance.source.sqlite.QuerySqlite; +import com.turtleplayer.model.AlbumArtLocation; +import com.turtleplayer.model.AlbumDigest; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.mapping.AlbumArtLocationCreator; import com.turtleplayer.preferences.Preferences; -import com.turtleplayer.util.Shorty; -import java.io.*; -import java.util.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileFilter; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; public class FsReader { - public static boolean scanFile(String filePath, - TurtleDatabase db, - Set encounteredRootSrcs) throws IOException + public static boolean scanFile( + String filePath, + TurtleDatabase db, + Set encounteredRootSrcs) throws IOException { // http://www.exampledepot.com/egs/java.io/GetFiles.html @@ -107,12 +122,12 @@ else if(mp3file.hasId3v2Tag()) } Track t = new Track( - new SongDigest(title), - new ArtistDigest(artist), - new AlbumDigest(album), - new GenreDigest(genre < 0 ? "" : String.valueOf(genre)), - number, - filePath + new SongDigest(title), + new ArtistDigest(artist), + new AlbumDigest(album), + new GenreDigest(genre < 0 ? "" : String.valueOf(genre)), + number, + filePath ); Log.v(Preferences.TAG, "created " + (System.currentTimeMillis() - start) + "ms"); boolean added = db.push(t); @@ -132,7 +147,12 @@ else if(mp3file.hasId3v2Tag()) return added; } - static public List getMediaFilesPaths(String mediaPath, List filters, boolean recursive, boolean getFirstMatch){ + static public List getMediaFilesPaths( + String mediaPath, + List filters, + boolean recursive, + boolean getFirstMatch) + { List candidates = new ArrayList(); @@ -195,11 +215,15 @@ public static String getAlbumArt(String mediaFileDir, TurtleDatabase db) final String result; AlbumArtLocation albumArtLocation = OperationExecutor.execute( - db, - new QuerySqlite( - new FieldFilter(Tables.AlbumArtLocations.PATH, Operator.EQ, mediaFileDir), - new First(Tables.ALBUM_ART_LOCATIONS, new AlbumArtLocationCreator()) - ) + db, + new ReadOperationSqlLite( + new QuerySqlite( + new FieldFilter( + Tables.AlbumArtLocations.PATH, + Operator.EQ, + mediaFileDir), + new FirstSqlLite(Tables.ALBUM_ART_LOCATIONS, new AlbumArtLocationCreator()) + )) ); if(albumArtLocation != null) @@ -260,11 +284,11 @@ static double parseDuration(String duration) final static FileFilter isDIR = new FileFilter() { final String[] IGNORED_DIRS = new String[]{ - "/proc/", - "/sys/", - "/system/", - "/proc/", - "/root/", + "/proc/", + "/sys/", + "/system/", + "/proc/", + "/root/", }; public boolean accept(File file) diff --git a/src/com/turtleplayer/persistance/framework/db/ObservableDatabase.java b/src/com/turtleplayer/persistance/turtle/db/ObservableDatabase.java similarity index 82% rename from src/com/turtleplayer/persistance/framework/db/ObservableDatabase.java rename to src/com/turtleplayer/persistance/turtle/db/ObservableDatabase.java index 2f82fb6..4e11425 100644 --- a/src/com/turtleplayer/persistance/framework/db/ObservableDatabase.java +++ b/src/com/turtleplayer/persistance/turtle/db/ObservableDatabase.java @@ -1,5 +1,7 @@ -package com.turtleplayer.persistance.framework.db; +package com.turtleplayer.persistance.turtle.db; +import android.database.sqlite.SQLiteOpenHelper; +import ch.hoene.perzist.android.DatabaseSqlLite; import com.turtleplayer.controller.Observer; import com.turtleplayer.model.Instance; @@ -23,9 +25,14 @@ * @author Simon Honegger (Hoene84) */ -public abstract class ObservableDatabase implements Database +public abstract class ObservableDatabase extends DatabaseSqlLite { + + protected ObservableDatabase(SQLiteOpenHelper sqLiteOpenHelper) { + super(sqLiteOpenHelper); + } + //--------------------------------------------- Observable private final Map observers = new HashMap(); diff --git a/src/com/turtleplayer/persistance/turtle/db/TurtleDatabase.java b/src/com/turtleplayer/persistance/turtle/db/TurtleDatabase.java index fb83bc0..5cd95e9 100644 --- a/src/com/turtleplayer/persistance/turtle/db/TurtleDatabase.java +++ b/src/com/turtleplayer/persistance/turtle/db/TurtleDatabase.java @@ -18,53 +18,39 @@ package com.turtleplayer.persistance.turtle.db; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.util.Log; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.creator.ResultCreator; -import com.turtleplayer.persistance.framework.db.Database; -import com.turtleplayer.persistance.framework.db.ObservableDatabase; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.filter.Filter; -import com.turtleplayer.persistance.framework.sort.FieldOrder; -import com.turtleplayer.persistance.framework.sort.SortOrder; -import com.turtleplayer.persistance.source.relational.FieldPersistable; -import com.turtleplayer.persistance.source.relational.View; -import com.turtleplayer.persistance.source.sql.MappingDistinct; -import com.turtleplayer.persistance.source.sql.MappingTable; -import com.turtleplayer.persistance.source.sql.query.Select; -import com.turtleplayer.persistance.source.sqlite.*; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.sort.SortOrder; +import ch.hoene.perzist.source.relational.FieldSortOrder; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.AlbumArtLocation; +import com.turtleplayer.model.Artist; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.Genre; +import com.turtleplayer.model.Song; +import com.turtleplayer.model.Track; import com.turtleplayer.persistance.turtle.FileBase; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.db.structure.Views; -import com.turtleplayer.persistance.turtle.mapping.*; +import com.turtleplayer.persistance.turtle.mapping.AlbumArtLoactionToDbMapper; +import com.turtleplayer.persistance.turtle.mapping.AlbumCreator; +import com.turtleplayer.persistance.turtle.mapping.ArtistCreator; +import com.turtleplayer.persistance.turtle.mapping.DirCreator; +import com.turtleplayer.persistance.turtle.mapping.FsObjectToDbMapper; +import com.turtleplayer.persistance.turtle.mapping.GenreCreator; +import com.turtleplayer.persistance.turtle.mapping.SongCreator; +import com.turtleplayer.persistance.turtle.mapping.TrackCreator; +import com.turtleplayer.persistance.turtle.mapping.TrackToDbMapper; -import java.util.Arrays; import java.util.List; -// Import - Android Content -// Import - Android Database -public class TurtleDatabase extends ObservableDatabase implements FileBase +public class TurtleDatabase extends ObservableDatabase implements FileBase { - final SQLiteDatabase db; - - public TurtleDatabase(Context context) + public TurtleDatabase(TurtleDatabaseImpl turtleDatabaseImpl) { - SQLiteOpenHelper turtleDatabaseImpl = new TurtleDatabaseImpl(context) - { - @Override - public void dbResetted() - { - notifyCleared(); - } - }; - db = turtleDatabaseImpl.getWritableDatabase(); + super(turtleDatabaseImpl); } //Write------------------------------------ @@ -74,7 +60,7 @@ public void dbResetted() */ public boolean push(final Track track) { - int insertedCount = OperationExecutor.execute(this, new InsertOperationSqlLite(new TrackToDbMapper()), track); + int insertedCount = push(track, new TrackToDbMapper()); if(insertedCount > 0) { notifyUpdate(track); @@ -85,18 +71,18 @@ public boolean push(final Track track) public void push(final AlbumArtLocation albumArtLocation) { - OperationExecutor.execute(this, new InsertOperationSqlLite(new AlbumArtLoactionToDbMapper()), albumArtLocation); + push(albumArtLocation, new AlbumArtLoactionToDbMapper()); } public void push(final FSobject dir) { - OperationExecutor.execute(this, new InsertOperationSqlLite(new FsObjectToDbMapper()), dir); + push(dir, new FsObjectToDbMapper()); } public void clear() { - OperationExecutor.execute(this, new DeleteTableContentSqlLite(), Tables.TRACKS); - OperationExecutor.execute(this, new DeleteTableContentSqlLite(), Tables.DIRS); + drop(Tables.TRACKS); + drop(Tables.DIRS); notifyCleared(); } @@ -104,101 +90,42 @@ public void clear() public boolean isEmpty(Filter filter) { - return OperationExecutor.execute( - this, - new QuerySqlite(filter, new CounterSqlite(Tables.TRACKS))).equals(0); + return isEmpty(filter, Tables.TRACKS); } public int countAvailableTracks(Filter filter) { - return OperationExecutor.execute( - this, - new QuerySqlite(filter, new CounterSqlite(Tables.TRACKS))); + return count(filter, Tables.TRACKS); } public List getTracks(Filter filter) { - return getList(filter, new TrackCreator(), Tables.TRACKS, Tables.TRACKS ,Tables.Tracks.TITLE); + return getList(filter, new TrackCreator(), Tables.TRACKS, Tables.TRACKS, new FieldSortOrder(Tables.Tracks.TITLE, SortOrder.ASC)); } public List getSongs(Filter filter) { - return getList(filter, new SongCreator(), Tables.TRACKS, Views.SONGS ,Tables.SongsReadable.TITLE); + return getList(filter, new SongCreator(), Tables.TRACKS, Views.SONGS, new FieldSortOrder(Tables.SongsReadable.TITLE, SortOrder.ASC)); } public List getArtists(Filter filter) { - return getList(filter, new ArtistCreator(), Tables.TRACKS, Views.ARTISTS, Tables.ArtistsReadable.ARTIST); + return getList(filter, new ArtistCreator(), Tables.TRACKS, Views.ARTISTS, new FieldSortOrder(Tables.ArtistsReadable.ARTIST, SortOrder.ASC)); } public List getGenres(Filter filter) { - return getList(filter, new GenreCreator(), Tables.TRACKS, Views.GENRES, Tables.GenresReadable.GENRE); + return getList(filter, new GenreCreator(), Tables.TRACKS, Views.GENRES, new FieldSortOrder(Tables.GenresReadable.GENRE, SortOrder.ASC)); } public List getAlbums(Filter filter) { - return getList(filter, new AlbumCreator(), Tables.TRACKS, Views.ALBUMS, Tables.AlbumsReadable.ALBUM); + return getList(filter, new AlbumCreator(), Tables.TRACKS, Views.ALBUMS, new FieldSortOrder(Tables.AlbumsReadable.ALBUM, SortOrder.ASC)); } public List getDirList(Filter filter) { - return getList(filter, new DirCreator(), Tables.DIRS, Tables.DIRS, Tables.Dirs.NAME); - } - - private List getList( - Filter filter, - ResultCreator creator, - PROJECTION view, - TARGET target, - FieldPersistable... sortFields) - { - return OperationExecutor.execute( - this, - new QuerySqlite>( - filter, - FieldOrder.getMultiFieldOrder(SortOrder.ASC, sortFields), - new MappingDistinct(view, new CreatorForListSqlite(creator), target) - ) - ); - } - - - public I read(Select query, - Database.DbReadOp readOp) - { - Cursor cursor = null; - try - { - String[] params = new String[query.getParams().size()]; - int i = 0; - - for (Object param : query.getParams()) - { - params[i++] = param.toString(); - } - Log.v(TurtleDatabase.class.getName(), - "Running Query: " + query.toSql() + " with params " + Arrays.deepToString(params)); - - cursor = db.rawQuery(query.toSql(), params); - - Log.v(TurtleDatabase.class.getName(), - "Resulting in " + cursor.getCount() + " Resulting Rows"); - - return readOp.read(cursor); - } finally - { - if (cursor != null) - { - cursor.close(); - } - } - } - - public int write(DbWriteOp writeOp, - I instance) - { - return writeOp.write(db, instance); + return getList(filter, new DirCreator(), Tables.DIRS, Tables.DIRS, new FieldSortOrder(Tables.Dirs.NAME, SortOrder.ASC)); } } \ No newline at end of file diff --git a/src/com/turtleplayer/persistance/turtle/db/TurtleDatabaseImpl.java b/src/com/turtleplayer/persistance/turtle/db/TurtleDatabaseImpl.java index 4fe6516..2bf2c44 100644 --- a/src/com/turtleplayer/persistance/turtle/db/TurtleDatabaseImpl.java +++ b/src/com/turtleplayer/persistance/turtle/db/TurtleDatabaseImpl.java @@ -3,7 +3,7 @@ import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import com.turtleplayer.persistance.source.relational.FieldPersistable; +import ch.hoene.perzist.source.relational.FieldPersistable; import com.turtleplayer.persistance.turtle.db.structure.Tables; import java.util.Arrays; diff --git a/src/com/turtleplayer/persistance/turtle/db/structure/Tables.java b/src/com/turtleplayer/persistance/turtle/db/structure/Tables.java index 98f54d0..e2a4234 100644 --- a/src/com/turtleplayer/persistance/turtle/db/structure/Tables.java +++ b/src/com/turtleplayer/persistance/turtle/db/structure/Tables.java @@ -1,14 +1,20 @@ package com.turtleplayer.persistance.turtle.db.structure; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.creator.Creator; -import com.turtleplayer.persistance.source.relational.Field; -import com.turtleplayer.persistance.source.relational.FieldPersistable; -import com.turtleplayer.persistance.source.relational.Table; -import com.turtleplayer.persistance.source.relational.View; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldPersistableAsInteger; -import com.turtleplayer.persistance.source.relational.fieldtype.FieldPersistableAsString; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.access.creator.Creator; +import ch.hoene.perzist.source.relational.Field; +import ch.hoene.perzist.source.relational.FieldPersistable; +import ch.hoene.perzist.source.relational.Table; +import ch.hoene.perzist.source.relational.View; +import ch.hoene.perzist.source.relational.fieldtype.FieldPersistableAsInteger; +import ch.hoene.perzist.source.relational.fieldtype.FieldPersistableAsString; +import ch.hoene.perzist.util.Shorty; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.AlbumArtLocation; +import com.turtleplayer.model.Artist; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.Genre; +import com.turtleplayer.model.Song; +import com.turtleplayer.model.Track; import java.util.Arrays; import java.util.List; diff --git a/src/com/turtleplayer/persistance/turtle/db/structure/Views.java b/src/com/turtleplayer/persistance/turtle/db/structure/Views.java index 5a68fa4..a3eec4c 100644 --- a/src/com/turtleplayer/persistance/turtle/db/structure/Views.java +++ b/src/com/turtleplayer/persistance/turtle/db/structure/Views.java @@ -1,7 +1,7 @@ package com.turtleplayer.persistance.turtle.db.structure; -import com.turtleplayer.persistance.source.relational.Field; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.source.relational.Field; +import ch.hoene.perzist.util.Shorty; import java.util.Arrays; import java.util.List; diff --git a/src/com/turtleplayer/persistance/turtle/filter/DirFilter.java b/src/com/turtleplayer/persistance/turtle/filter/DirFilter.java index d50003d..079161f 100644 --- a/src/com/turtleplayer/persistance/turtle/filter/DirFilter.java +++ b/src/com/turtleplayer/persistance/turtle/filter/DirFilter.java @@ -1,7 +1,9 @@ package com.turtleplayer.persistance.turtle.filter; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.FilterVisitor; +import ch.hoene.perzist.access.filter.Operator; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.filter.*; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** diff --git a/src/com/turtleplayer/persistance/turtle/filter/TurtleFilterVisitor.java b/src/com/turtleplayer/persistance/turtle/filter/TurtleFilterVisitor.java index 1b009a3..1184651 100644 --- a/src/com/turtleplayer/persistance/turtle/filter/TurtleFilterVisitor.java +++ b/src/com/turtleplayer/persistance/turtle/filter/TurtleFilterVisitor.java @@ -17,7 +17,7 @@ * @author Simon Honegger (Hoene84) */ -import com.turtleplayer.persistance.framework.filter.FilterVisitor; +import ch.hoene.perzist.access.filter.FilterVisitor; /** * @param What the Visitor Produces (can be {@link Void} if nothing gets produced) diff --git a/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLoactionToDbMapper.java b/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLoactionToDbMapper.java index 8f9017f..378b354 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLoactionToDbMapper.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLoactionToDbMapper.java @@ -1,8 +1,9 @@ package com.turtleplayer.persistance.turtle.mapping; import android.content.ContentValues; +import ch.hoene.perzist.access.mapping.Mapping; +import ch.hoene.perzist.source.relational.Table; import com.turtleplayer.model.AlbumArtLocation; -import com.turtleplayer.persistance.source.sql.QueryGeneratorTable; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -22,11 +23,10 @@ * @author Simon Honegger (Hoene84) */ -public class AlbumArtLoactionToDbMapper extends QueryGeneratorTable +public class AlbumArtLoactionToDbMapper implements Mapping { - public AlbumArtLoactionToDbMapper() - { - super(Tables.ALBUM_ART_LOCATIONS); + public Table get() { + return Tables.ALBUM_ART_LOCATIONS; } public ContentValues create(AlbumArtLocation albumArtLocation) diff --git a/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLocationCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLocationCreator.java index bf2aef8..8ee7951 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLocationCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/AlbumArtLocationCreator.java @@ -1,8 +1,8 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.creator.Creator; +import ch.hoene.perzist.access.creator.Creator; +import com.turtleplayer.model.AlbumArtLocation; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** diff --git a/src/com/turtleplayer/persistance/turtle/mapping/AlbumCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/AlbumCreator.java index b3ae8e1..32f665b 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/AlbumCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/AlbumCreator.java @@ -1,9 +1,9 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; +import ch.hoene.perzist.access.creator.ResultCreator; import com.turtleplayer.model.Album; import com.turtleplayer.model.AlbumDigest; -import com.turtleplayer.persistance.framework.creator.ResultCreator; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -25,8 +25,8 @@ public class AlbumCreator implements ResultCreator { - public Album create(Cursor source) - { - return new AlbumDigest(source.getString(source.getColumnIndex(Tables.AlbumsReadable.ALBUM.getName()))); - } + public Album create(Cursor source) + { + return new AlbumDigest(source.getString(source.getColumnIndex(Tables.AlbumsReadable.ALBUM.getName()))); + } } diff --git a/src/com/turtleplayer/persistance/turtle/mapping/ArtistCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/ArtistCreator.java index 86e4f13..2b2bfc2 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/ArtistCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/ArtistCreator.java @@ -1,8 +1,8 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; +import ch.hoene.perzist.access.creator.ResultCreator; import com.turtleplayer.model.ArtistDigest; -import com.turtleplayer.persistance.framework.creator.ResultCreator; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.db.structure.Views; @@ -25,8 +25,8 @@ public class ArtistCreator implements ResultCreator { - public ArtistDigest create(Cursor source) - { - return new ArtistDigest(source.getString(source.getColumnIndex(Tables.ArtistsReadable.ARTIST.getName()))); - } + public ArtistDigest create(Cursor source) + { + return new ArtistDigest(source.getString(source.getColumnIndex(Tables.ArtistsReadable.ARTIST.getName()))); + } } diff --git a/src/com/turtleplayer/persistance/turtle/mapping/DirCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/DirCreator.java index 3bade09..327973a 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/DirCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/DirCreator.java @@ -1,8 +1,8 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; +import ch.hoene.perzist.access.creator.ResultCreator; import com.turtleplayer.model.FSobject; -import com.turtleplayer.persistance.framework.creator.ResultCreator; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** diff --git a/src/com/turtleplayer/persistance/turtle/mapping/FsObjectToDbMapper.java b/src/com/turtleplayer/persistance/turtle/mapping/FsObjectToDbMapper.java index 9e752e3..65f3539 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/FsObjectToDbMapper.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/FsObjectToDbMapper.java @@ -1,8 +1,9 @@ package com.turtleplayer.persistance.turtle.mapping; import android.content.ContentValues; +import ch.hoene.perzist.access.mapping.Mapping; +import ch.hoene.perzist.source.relational.Table; import com.turtleplayer.model.FSobject; -import com.turtleplayer.persistance.source.sql.QueryGeneratorTable; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -22,11 +23,10 @@ * @author Simon Honegger (Hoene84) */ -public class FsObjectToDbMapper extends QueryGeneratorTable +public class FsObjectToDbMapper implements Mapping { - public FsObjectToDbMapper() - { - super(Tables.DIRS); + public Table get() { + return Tables.DIRS; } public ContentValues create(FSobject fsObject) diff --git a/src/com/turtleplayer/persistance/turtle/mapping/GenreCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/GenreCreator.java index 56ce60d..4ea3feb 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/GenreCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/GenreCreator.java @@ -1,8 +1,8 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; +import ch.hoene.perzist.access.creator.ResultCreator; import com.turtleplayer.model.GenreDigest; -import com.turtleplayer.persistance.framework.creator.ResultCreator; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -24,8 +24,8 @@ public class GenreCreator implements ResultCreator { - public GenreDigest create(Cursor source) - { - return new GenreDigest(source.getString(source.getColumnIndex(Tables.GenresReadable.GENRE.getName()))); - } + public GenreDigest create(Cursor source) + { + return new GenreDigest(source.getString(source.getColumnIndex(Tables.GenresReadable.GENRE.getName()))); + } } diff --git a/src/com/turtleplayer/persistance/turtle/mapping/SongCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/SongCreator.java index c5d2e06..7916453 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/SongCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/SongCreator.java @@ -1,8 +1,8 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; +import ch.hoene.perzist.access.creator.ResultCreator; import com.turtleplayer.model.SongDigest; -import com.turtleplayer.persistance.framework.creator.ResultCreator; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -25,8 +25,8 @@ public class SongCreator implements ResultCreator { - public SongDigest create(Cursor source) - { - return new SongDigest(source.getString(source.getColumnIndex(Tables.SongsReadable.TITLE.getName()))); - } + public SongDigest create(Cursor source) + { + return new SongDigest(source.getString(source.getColumnIndex(Tables.SongsReadable.TITLE.getName()))); + } } diff --git a/src/com/turtleplayer/persistance/turtle/mapping/StringCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/StringCreator.java index d51842b..4a46337 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/StringCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/StringCreator.java @@ -1,7 +1,7 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; -import com.turtleplayer.persistance.framework.creator.Creator; +import ch.hoene.perzist.access.creator.Creator; /** * TURTLE PLAYER diff --git a/src/com/turtleplayer/persistance/turtle/mapping/TrackCreator.java b/src/com/turtleplayer/persistance/turtle/mapping/TrackCreator.java index e1d2a79..7af13c9 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/TrackCreator.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/TrackCreator.java @@ -1,8 +1,12 @@ package com.turtleplayer.persistance.turtle.mapping; import android.database.Cursor; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.creator.ResultCreator; +import ch.hoene.perzist.access.creator.ResultCreator; +import com.turtleplayer.model.AlbumDigest; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** diff --git a/src/com/turtleplayer/persistance/turtle/mapping/TrackToDbMapper.java b/src/com/turtleplayer/persistance/turtle/mapping/TrackToDbMapper.java index 2a73ec7..71e344c 100644 --- a/src/com/turtleplayer/persistance/turtle/mapping/TrackToDbMapper.java +++ b/src/com/turtleplayer/persistance/turtle/mapping/TrackToDbMapper.java @@ -1,8 +1,9 @@ package com.turtleplayer.persistance.turtle.mapping; import android.content.ContentValues; +import ch.hoene.perzist.access.mapping.Mapping; +import ch.hoene.perzist.source.relational.Table; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.source.sql.QueryGeneratorTable; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** @@ -22,11 +23,10 @@ * @author Simon Honegger (Hoene84) */ -public class TrackToDbMapper extends QueryGeneratorTable +public class TrackToDbMapper implements Mapping { - public TrackToDbMapper() - { - super(Tables.TRACKS); + public Table get() { + return Tables.TRACKS; } public ContentValues create(Track track) diff --git a/src/com/turtleplayer/player/PlayerService.java b/src/com/turtleplayer/player/PlayerService.java index 499d486..a133037 100644 --- a/src/com/turtleplayer/player/PlayerService.java +++ b/src/com/turtleplayer/player/PlayerService.java @@ -5,7 +5,12 @@ import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; -import android.os.*; +import android.os.Binder; +import android.os.Bundle; +import android.os.IBinder; +import android.os.Message; +import android.os.Messenger; +import android.os.RemoteException; import android.util.Log; import com.turtleplayer.Player; import com.turtleplayer.R; diff --git a/src/com/turtleplayer/player/PlayerServiceConnector.java b/src/com/turtleplayer/player/PlayerServiceConnector.java index 2b66a5d..7ed156e 100644 --- a/src/com/turtleplayer/player/PlayerServiceConnector.java +++ b/src/com/turtleplayer/player/PlayerServiceConnector.java @@ -1,7 +1,15 @@ package com.turtleplayer.player; -import android.content.*; -import android.os.*; +import android.content.ComponentName; +import android.content.Context; +import android.content.ContextWrapper; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.AsyncTask; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.os.Messenger; import android.util.Log; import com.turtleplayer.model.Track; import com.turtleplayer.preferences.Preferences; diff --git a/src/com/turtleplayer/playlist/Playlist.java b/src/com/turtleplayer/playlist/Playlist.java index 65b9add..aff7ce4 100644 --- a/src/com/turtleplayer/playlist/Playlist.java +++ b/src/com/turtleplayer/playlist/Playlist.java @@ -21,18 +21,22 @@ import android.content.Context; import android.util.Log; +import ch.hoene.perzist.access.executor.OperationExecutor; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.filter.FilterSet; +import ch.hoene.perzist.access.filter.Operator; +import ch.hoene.perzist.access.sort.RandomOrder; +import ch.hoene.perzist.android.FirstSqlLite; +import ch.hoene.perzist.android.QuerySqlite; +import ch.hoene.perzist.android.ReadOperationSqlLite; +import ch.hoene.perzist.util.Shorty; import com.turtleplayer.Stats; import com.turtleplayer.common.filefilter.FileFilters; import com.turtleplayer.controller.Observer; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.filter.FieldFilter; -import com.turtleplayer.persistance.framework.filter.Filter; -import com.turtleplayer.persistance.framework.filter.FilterSet; -import com.turtleplayer.persistance.framework.filter.Operator; -import com.turtleplayer.persistance.framework.sort.RandomOrder; -import com.turtleplayer.persistance.source.sql.First; -import com.turtleplayer.persistance.source.sqlite.QuerySqlite; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.Track; +import com.turtleplayer.model.TrackBundle; import com.turtleplayer.persistance.turtle.FsReader; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; @@ -40,11 +44,19 @@ import com.turtleplayer.playlist.playorder.PlayOrderStrategy; import com.turtleplayer.preferences.Keys; import com.turtleplayer.preferences.Preferences; -import com.turtleplayer.util.Shorty; import java.io.IOException; -import java.util.*; -import java.util.concurrent.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; public class Playlist { @@ -128,9 +140,9 @@ public Set> getFilter() */ public TrackBundle enrich(PlayOrderStrategy strategy, Track track){ return new TrackBundle( - track, - strategy.getNext(track), - strategy.getPrevious(track) + track, + strategy.getNext(track), + strategy.getPrevious(track) ); } @@ -138,14 +150,21 @@ public Track getTrack(String src) { FSobject fsObject = new FSobject(src); return OperationExecutor.execute( - db, - new QuerySqlite( - new FilterSet( - getCompressedFilter(), - new FieldFilter(Tables.FsObjects.NAME, Operator.EQ, fsObject.getPath()), - new FieldFilter(Tables.FsObjects.PATH, Operator.EQ, fsObject.getName())), - new First(Tables.TRACKS, new TrackCreator()) - ) + db, + new ReadOperationSqlLite( + new QuerySqlite( + new FilterSet( + getCompressedFilter(), + new FieldFilter( + Tables.FsObjects.NAME, + Operator.EQ, + fsObject.getPath()), + new FieldFilter( + Tables.FsObjects.PATH, + Operator.EQ, + fsObject.getName())), + new FirstSqlLite(Tables.TRACKS, new TrackCreator()) + )) ); } @@ -163,10 +182,11 @@ public Track getPrevious(PlayOrderStrategy strategy, Track ofTrack) public Track getRandom() { return OperationExecutor.execute(db, - new QuerySqlite( - getCompressedFilter(), - new RandomOrder(), - new First(Tables.TRACKS, new TrackCreator()))); + new ReadOperationSqlLite( + new QuerySqlite( + getCompressedFilter(), + new RandomOrder(), + new FirstSqlLite(Tables.TRACKS, new TrackCreator())))); } /** diff --git a/src/com/turtleplayer/playlist/playorder/DefaultOrder.java b/src/com/turtleplayer/playlist/playorder/DefaultOrder.java index 4dbd974..6c9b700 100644 --- a/src/com/turtleplayer/playlist/playorder/DefaultOrder.java +++ b/src/com/turtleplayer/playlist/playorder/DefaultOrder.java @@ -1,9 +1,9 @@ package com.turtleplayer.playlist.playorder; +import ch.hoene.perzist.access.sort.FieldOrder; +import ch.hoene.perzist.access.sort.OrderSet; +import ch.hoene.perzist.access.sort.SortOrder; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.sort.FieldOrder; -import com.turtleplayer.persistance.framework.sort.OrderSet; -import com.turtleplayer.persistance.framework.sort.SortOrder; import com.turtleplayer.persistance.turtle.db.structure.Tables; /** diff --git a/src/com/turtleplayer/playlist/playorder/LimitedStack.java b/src/com/turtleplayer/playlist/playorder/LimitedStack.java index 3994bf4..ea2cec3 100644 --- a/src/com/turtleplayer/playlist/playorder/LimitedStack.java +++ b/src/com/turtleplayer/playlist/playorder/LimitedStack.java @@ -11,59 +11,59 @@ */ public class LimitedStack extends ArrayList { - private final int maxSize; - private final static double CLEAR_PERCENT = 0.1; + private final int maxSize; + private final static double CLEAR_PERCENT = 0.1; - public LimitedStack(int maxSize) { - super(maxSize); - this.maxSize = maxSize; - } + public LimitedStack(int maxSize) { + super(maxSize); + this.maxSize = maxSize; + } - @Override - public boolean add(T object) - { - boolean returnValue = super.add(object); - keepMaxSize(); - return returnValue; - } + @Override + public boolean add(T object) + { + boolean returnValue = super.add(object); + keepMaxSize(); + return returnValue; + } - @Override - public void add(int index, T object) - { - super.add(index, object); - keepMaxSize(); - } + @Override + public void add(int index, T object) + { + super.add(index, object); + keepMaxSize(); + } - @Override - public boolean addAll(Collection collection) - { - boolean returnValue = super.addAll(collection); //To change body of overridden methods use File | Settings | File Templates. - keepMaxSize(); - return returnValue; - } + @Override + public boolean addAll(Collection collection) + { + boolean returnValue = super.addAll(collection); //To change body of overridden methods use File | Settings | File Templates. + keepMaxSize(); + return returnValue; + } - @Override - public boolean addAll(int index, Collection collection) - { - boolean returnValue = super.addAll(index, collection); //To change body of overridden methods use File | Settings | File Templates. - keepMaxSize(); - return returnValue; - } + @Override + public boolean addAll(int index, Collection collection) + { + boolean returnValue = super.addAll(index, collection); //To change body of overridden methods use File | Settings | File Templates. + keepMaxSize(); + return returnValue; + } - /** - * @return last addded item. Dont call when empty - */ - public T pop(){ - T poppedipop = get(size() - 1); - remove(size() - 1); - return poppedipop; - } + /** + * @return last addded item. Dont call when empty + */ + public T pop(){ + T poppedipop = get(size() - 1); + remove(size() - 1); + return poppedipop; + } - private void keepMaxSize() - { - if(size() > maxSize) - { - subList((int)(maxSize * CLEAR_PERCENT), size()); - } - } + private void keepMaxSize() + { + if(size() > maxSize) + { + subList((int)(maxSize * CLEAR_PERCENT), size()); + } + } } diff --git a/src/com/turtleplayer/playlist/playorder/PlayOrderRandom.java b/src/com/turtleplayer/playlist/playorder/PlayOrderRandom.java index 5e2b2c5..df79b95 100644 --- a/src/com/turtleplayer/playlist/playorder/PlayOrderRandom.java +++ b/src/com/turtleplayer/playlist/playorder/PlayOrderRandom.java @@ -1,10 +1,11 @@ package com.turtleplayer.playlist.playorder; +import ch.hoene.perzist.access.executor.OperationExecutor; +import ch.hoene.perzist.access.sort.RandomOrder; +import ch.hoene.perzist.android.FirstSqlLite; +import ch.hoene.perzist.android.QuerySqlite; +import ch.hoene.perzist.android.ReadOperationSqlLite; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.sort.RandomOrder; -import com.turtleplayer.persistance.source.sql.First; -import com.turtleplayer.persistance.source.sqlite.QuerySqlite; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.mapping.TrackCreator; @@ -35,10 +36,15 @@ public Track getPrevious(Track currTrack) private Track get() { - return OperationExecutor.execute(db, - new QuerySqlite( - playlist.getCompressedFilter(), - new RandomOrder(), - new First(Tables.TRACKS, new TrackCreator()))); + return OperationExecutor.execute( + db, + new ReadOperationSqlLite( + new QuerySqlite( + playlist.getCompressedFilter(), + new RandomOrder(), + new FirstSqlLite(Tables.TRACKS, new TrackCreator()) + ) + ) + ); } } diff --git a/src/com/turtleplayer/playlist/playorder/PlayOrderSorted.java b/src/com/turtleplayer/playlist/playorder/PlayOrderSorted.java index ee0e719..9b9963e 100644 --- a/src/com/turtleplayer/playlist/playorder/PlayOrderSorted.java +++ b/src/com/turtleplayer/playlist/playorder/PlayOrderSorted.java @@ -19,13 +19,14 @@ package com.turtleplayer.playlist.playorder; import android.util.Log; +import ch.hoene.perzist.access.executor.OperationExecutor; +import ch.hoene.perzist.access.paging.Paging; +import ch.hoene.perzist.access.sort.OrderSet; +import ch.hoene.perzist.access.sort.SortOrder; +import ch.hoene.perzist.android.FirstSqlLite; +import ch.hoene.perzist.android.QuerySqlite; +import ch.hoene.perzist.android.ReadOperationSqlLite; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.paging.Paging; -import com.turtleplayer.persistance.framework.sort.OrderSet; -import com.turtleplayer.persistance.framework.sort.SortOrder; -import com.turtleplayer.persistance.source.sql.First; -import com.turtleplayer.persistance.source.sqlite.QuerySqlite; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.mapping.TrackCreator; @@ -60,16 +61,17 @@ private Track get(Track ofTrack, OrderSet order) while(!currOrder.isEmpty()) { Log.v(PlayOrderSorted.class.getName(), - "Generate Paging Filters from: " + order); + "Generate Paging Filters from: " + order); Log.v(PlayOrderSorted.class.getName(), - "resulting in Paging Filters : " + Paging.getFilter(playlist.getCompressedFilter(), ofTrack, currOrder)); + "resulting in Paging Filters : " + Paging.getFilter(playlist.getCompressedFilter(), ofTrack, currOrder)); Track nextTrack = OperationExecutor.execute( - db, - new QuerySqlite( - Paging.getFilter(playlist.getCompressedFilter(), ofTrack, currOrder), - order, - new First(Tables.TRACKS, new TrackCreator()) - ) + db, + new ReadOperationSqlLite( + new QuerySqlite( + Paging.getFilter(playlist.getCompressedFilter(), ofTrack, currOrder), + order, + new FirstSqlLite(Tables.TRACKS, new TrackCreator()) + )) ); if(nextTrack != null){ return nextTrack; diff --git a/src/com/turtleplayer/playlist/playorder/PlayOrderStrategy.java b/src/com/turtleplayer/playlist/playorder/PlayOrderStrategy.java index 319060a..5151d9a 100644 --- a/src/com/turtleplayer/playlist/playorder/PlayOrderStrategy.java +++ b/src/com/turtleplayer/playlist/playorder/PlayOrderStrategy.java @@ -6,7 +6,7 @@ public interface PlayOrderStrategy { /* * @return null if strategy has no next song for this config and tracklist - */ + */ Track getNext(Track currTrack); /** diff --git a/src/com/turtleplayer/preferences/Keys.java b/src/com/turtleplayer/preferences/Keys.java index 681d7f7..138e6d2 100644 --- a/src/com/turtleplayer/preferences/Keys.java +++ b/src/com/turtleplayer/preferences/Keys.java @@ -19,7 +19,7 @@ package com.turtleplayer.preferences; import android.os.Environment; -import com.turtleplayer.persistance.framework.filter.Filter; +import ch.hoene.perzist.access.filter.Filter; import com.turtleplayer.persistance.turtle.db.structure.Tables; import java.util.HashSet; diff --git a/src/com/turtleplayer/preferences/ObjectKey.java b/src/com/turtleplayer/preferences/ObjectKey.java index 16e62a8..b04b3c8 100644 --- a/src/com/turtleplayer/preferences/ObjectKey.java +++ b/src/com/turtleplayer/preferences/ObjectKey.java @@ -23,7 +23,11 @@ import android.util.Base64OutputStream; import android.util.Log; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; public class ObjectKey extends AbstractKey { diff --git a/src/com/turtleplayer/presentation/AlbumArtResolver.java b/src/com/turtleplayer/presentation/AlbumArtResolver.java index aa3705f..5ddab6e 100644 --- a/src/com/turtleplayer/presentation/AlbumArtResolver.java +++ b/src/com/turtleplayer/presentation/AlbumArtResolver.java @@ -4,22 +4,23 @@ import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.util.Log; +import ch.hoene.perzist.access.executor.OperationExecutor; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Operator; +import ch.hoene.perzist.android.FirstSqlLite; +import ch.hoene.perzist.android.QuerySqlite; +import ch.hoene.perzist.android.ReadOperationSqlLite; +import ch.hoene.perzist.util.Shorty; import com.mpatric.mp3agic.InvalidDataException; import com.mpatric.mp3agic.Mp3File; import com.mpatric.mp3agic.UnsupportedTagException; import com.turtleplayer.model.AlbumArtLocation; import com.turtleplayer.model.Track; -import com.turtleplayer.persistance.framework.executor.OperationExecutor; -import com.turtleplayer.persistance.framework.filter.FieldFilter; -import com.turtleplayer.persistance.framework.filter.Operator; -import com.turtleplayer.persistance.source.sql.First; -import com.turtleplayer.persistance.source.sqlite.QuerySqlite; import com.turtleplayer.persistance.turtle.FsReader; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.mapping.AlbumArtLocationCreator; import com.turtleplayer.preferences.Preferences; -import com.turtleplayer.util.Shorty; import java.io.IOException; @@ -80,20 +81,27 @@ private interface LookupStrategy private class CachedFsLookupStrategy implements LookupStrategy { - public Bitmap lookup(Track track) - { - AlbumArtLocation albumArtLocation = OperationExecutor.execute( - db, - new QuerySqlite(new FieldFilter(Tables.AlbumArtLocations.PATH, Operator.EQ, track.getPath()), - new First(Tables.ALBUM_ART_LOCATIONS, new AlbumArtLocationCreator()))); + public Bitmap lookup(Track track) + { + AlbumArtLocation albumArtLocation = OperationExecutor.execute( + db, + new ReadOperationSqlLite( + new QuerySqlite( + new FieldFilter( + Tables.AlbumArtLocations.PATH, + Operator.EQ, + track.getPath()), + new FirstSqlLite( + Tables.ALBUM_ART_LOCATIONS, + new AlbumArtLocationCreator())))); - if(albumArtLocation != null) - { - return BitmapFactory.decodeFile(albumArtLocation.getAlbumArtpath()); - } - return null; - } - } + if(albumArtLocation != null) + { + return BitmapFactory.decodeFile(albumArtLocation.getAlbumArtpath()); + } + return null; + } + } private class FsLookupStrategy implements LookupStrategy diff --git a/src/com/turtleplayer/presentation/InstanceFormatter.java b/src/com/turtleplayer/presentation/InstanceFormatter.java index 237e48d..1f11942 100644 --- a/src/com/turtleplayer/presentation/InstanceFormatter.java +++ b/src/com/turtleplayer/presentation/InstanceFormatter.java @@ -4,9 +4,9 @@ public abstract class InstanceFormatter implements InstanceVisitor { - final static String DELIMITER = " - "; + final static String DELIMITER = " - "; - public final static InstanceFormatter SHORT = new ShortInstanceFormatter(); - public final static InstanceFormatter SHORT_WITH_NUMBER = new ShortWithNumberInstanceFormatter(); - public final static InstanceFormatter LIST = new OverAllFormatter(); + public final static InstanceFormatter SHORT = new ShortInstanceFormatter(); + public final static InstanceFormatter SHORT_WITH_NUMBER = new ShortWithNumberInstanceFormatter(); + public final static InstanceFormatter LIST = new OverAllFormatter(); } diff --git a/src/com/turtleplayer/presentation/OverAllFormatter.java b/src/com/turtleplayer/presentation/OverAllFormatter.java index f75b659..22fd513 100644 --- a/src/com/turtleplayer/presentation/OverAllFormatter.java +++ b/src/com/turtleplayer/presentation/OverAllFormatter.java @@ -18,8 +18,13 @@ package com.turtleplayer.presentation; -import com.turtleplayer.model.*; -import com.turtleplayer.util.Shorty; +import ch.hoene.perzist.util.Shorty; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.util.TurtleUtil; class OverAllFormatter extends InstanceFormatter diff --git a/src/com/turtleplayer/presentation/ShortInstanceFormatter.java b/src/com/turtleplayer/presentation/ShortInstanceFormatter.java index b337a1e..8110425 100644 --- a/src/com/turtleplayer/presentation/ShortInstanceFormatter.java +++ b/src/com/turtleplayer/presentation/ShortInstanceFormatter.java @@ -18,14 +18,19 @@ package com.turtleplayer.presentation; -import com.turtleplayer.model.*; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; class ShortInstanceFormatter extends InstanceFormatter { - public String visit(Track track) - { - return track.getSongName(); - } + public String visit(Track track) + { + return track.getSongName(); + } public String visit(SongDigest track) { @@ -33,9 +38,9 @@ public String visit(SongDigest track) } public String visit(Album album) - { - return album.getAlbumName(); - } + { + return album.getAlbumName(); + } public String visit(GenreDigest genre) { diff --git a/src/com/turtleplayer/presentation/ShortWithNumberInstanceFormatter.java b/src/com/turtleplayer/presentation/ShortWithNumberInstanceFormatter.java index 2dd2a3b..00a860b 100644 --- a/src/com/turtleplayer/presentation/ShortWithNumberInstanceFormatter.java +++ b/src/com/turtleplayer/presentation/ShortWithNumberInstanceFormatter.java @@ -18,22 +18,22 @@ package com.turtleplayer.presentation; +import ch.hoene.perzist.util.Shorty; import com.turtleplayer.model.Track; -import com.turtleplayer.util.Shorty; class ShortWithNumberInstanceFormatter extends ShortInstanceFormatter { - @Override - public String visit(Track track) - { - String trackName = track.getSongName(); + @Override + public String visit(Track track) + { + String trackName = track.getSongName(); - int number = track.GetNumber(); + int number = track.GetNumber(); - if(!Shorty.isVoid(number)) - { - return number + DELIMITER + trackName; - } - return trackName; - } + if(!Shorty.isVoid(number)) + { + return number + DELIMITER + trackName; + } + return trackName; + } } diff --git a/src/com/turtleplayer/util/DefaultAdapter.java b/src/com/turtleplayer/util/DefaultAdapter.java index 25a3f78..bff6686 100644 --- a/src/com/turtleplayer/util/DefaultAdapter.java +++ b/src/com/turtleplayer/util/DefaultAdapter.java @@ -29,7 +29,14 @@ import android.widget.ImageView; import android.widget.TextView; import com.turtleplayer.R; -import com.turtleplayer.model.*; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.Instance; +import com.turtleplayer.model.InstanceVisitor; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.presentation.InstanceFormatter; import java.util.Collections; diff --git a/src/com/turtleplayer/util/FormattedInstanceComparator.java b/src/com/turtleplayer/util/FormattedInstanceComparator.java index fc7011a..bb25c3d 100644 --- a/src/com/turtleplayer/util/FormattedInstanceComparator.java +++ b/src/com/turtleplayer/util/FormattedInstanceComparator.java @@ -18,7 +18,14 @@ package com.turtleplayer.util; -import com.turtleplayer.model.*; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.Instance; +import com.turtleplayer.model.InstanceVisitor; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.presentation.InstanceFormatter; import java.text.Collator; diff --git a/src/com/turtleplayer/util/Shorty.java b/src/com/turtleplayer/util/Shorty.java deleted file mode 100644 index c1c02a7..0000000 --- a/src/com/turtleplayer/util/Shorty.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * - * TURTLE PLAYER - * - * Licensed under MIT & GPL - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE - * OR OTHER DEALINGS IN THE SOFTWARE. - * - * More Information @ www.turtle-player.co.uk - * - * @author Simon Honegger (Hoene84) - */ - -package com.turtleplayer.util; - -import java.util.*; - -public class Shorty -{ - public static boolean isVoid(String string) - { - return string == null || string.length() == 0; - } - - public static boolean isVoid(Integer integer) - { - return integer == null || integer == 0; - } - - public static > boolean isVoid(T collection) - { - return collection == null || collection.size() == 0; - } - - public static String avoidNull(String s) - { - return isVoid(s) ? "" : s; - } - - public static > T avoidNull(T collection, T emptyCollections) - { - return isVoid(collection) ? emptyCollections : collection; - } - - public static Set oneElementSet(E element) - { - final Set result = new HashSet(); - result.add(element); - return result; - } - - @SuppressWarnings({"unchecked"}) - public static List concat(List... lists) - { - List result = new ArrayList(); - for(List list : lists) - { - result.addAll(list); - } - - return result; - } - - public static List concatWith(List arrays, T... elements) - { - return concat(arrays, Arrays.asList(elements)); - } -} diff --git a/src/com/turtleplayer/util/TurtleUtil.java b/src/com/turtleplayer/util/TurtleUtil.java index c0345e8..0acc266 100644 --- a/src/com/turtleplayer/util/TurtleUtil.java +++ b/src/com/turtleplayer/util/TurtleUtil.java @@ -1,5 +1,6 @@ package com.turtleplayer.util; +import ch.hoene.perzist.util.Shorty; import com.turtleplayer.R; import com.turtleplayer.TurtlePlayer; diff --git a/src/com/turtleplayer/view/AlbumArtView.java b/src/com/turtleplayer/view/AlbumArtView.java index 20edbcc..7d89459 100644 --- a/src/com/turtleplayer/view/AlbumArtView.java +++ b/src/com/turtleplayer/view/AlbumArtView.java @@ -3,12 +3,12 @@ import android.app.Activity; import android.os.AsyncTask; import android.view.View; +import ch.hoene.perzist.access.filter.Filter; import com.turtleplayer.R; import com.turtleplayer.TurtlePlayer; import com.turtleplayer.controller.TouchHandler; import com.turtleplayer.model.Track; import com.turtleplayer.model.TrackBundle; -import com.turtleplayer.persistance.framework.filter.Filter; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.player.ObservableOutput; import com.turtleplayer.player.Output; diff --git a/src/com/turtleplayer/view/FileChooser.java b/src/com/turtleplayer/view/FileChooser.java index b54cf45..5dd1621 100644 --- a/src/com/turtleplayer/view/FileChooser.java +++ b/src/com/turtleplayer/view/FileChooser.java @@ -21,15 +21,30 @@ import android.view.View; import android.widget.ImageView; import android.widget.ListView; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.filter.FilterSet; +import ch.hoene.perzist.access.filter.NotFilter; +import ch.hoene.perzist.access.filter.Operator; import com.turtleplayer.Player; import com.turtleplayer.R; import com.turtleplayer.TurtlePlayer; import com.turtleplayer.common.MatchFilterVisitor; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.filter.*; +import com.turtleplayer.model.Album; +import com.turtleplayer.model.AlbumDigest; +import com.turtleplayer.model.Artist; +import com.turtleplayer.model.ArtistDigest; +import com.turtleplayer.model.FSobject; +import com.turtleplayer.model.Genre; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.Instance; +import com.turtleplayer.model.InstanceVisitor; +import com.turtleplayer.model.SongDigest; +import com.turtleplayer.model.Track; import com.turtleplayer.persistance.turtle.db.TurtleDatabase; import com.turtleplayer.persistance.turtle.db.structure.Tables; -import com.turtleplayer.persistance.turtle.filter.*; +import com.turtleplayer.persistance.turtle.filter.DirFilter; +import com.turtleplayer.persistance.turtle.filter.TurtleFilterVisitor; import com.turtleplayer.preferences.AbstractKey; import com.turtleplayer.preferences.Keys; import com.turtleplayer.preferences.Preferences; @@ -37,7 +52,12 @@ import com.turtleplayer.presentation.InstanceFormatter; import com.turtleplayer.util.DefaultAdapter; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; public abstract class FileChooser implements TurtleDatabase.DbObserver { diff --git a/src/com/turtleplayer/view/FilterListAdapter.java b/src/com/turtleplayer/view/FilterListAdapter.java index f446d4f..71df2e1 100644 --- a/src/com/turtleplayer/view/FilterListAdapter.java +++ b/src/com/turtleplayer/view/FilterListAdapter.java @@ -26,9 +26,15 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import ch.hoene.perzist.access.filter.FieldFilter; +import ch.hoene.perzist.access.filter.Filter; +import ch.hoene.perzist.access.filter.FilterSet; +import ch.hoene.perzist.access.filter.NotFilter; import com.turtleplayer.R; -import com.turtleplayer.model.*; -import com.turtleplayer.persistance.framework.filter.*; +import com.turtleplayer.model.AlbumDigest; +import com.turtleplayer.model.GenreDigest; +import com.turtleplayer.model.Instance; +import com.turtleplayer.model.SongDigest; import com.turtleplayer.persistance.turtle.db.structure.Tables; import com.turtleplayer.persistance.turtle.filter.DirFilter; import com.turtleplayer.persistance.turtle.filter.TurtleFilterVisitor; diff --git a/test/com/turtleplayer/persistance/turtle/FsReaderTest.java b/test/com/turtleplayer/persistance/turtle/FsReaderTest.java index 8c05ba1..5cc1b6d 100644 --- a/test/com/turtleplayer/persistance/turtle/FsReaderTest.java +++ b/test/com/turtleplayer/persistance/turtle/FsReaderTest.java @@ -25,20 +25,20 @@ public class FsReaderTest { - @Test - public void testParseTrackNumber() throws Exception - { - assertEquals(1, FsReader.parseTrackNumber("1")); - assertEquals(1, FsReader.parseTrackNumber("01")); - assertEquals(1, FsReader.parseTrackNumber("1/2")); - assertEquals(1, FsReader.parseTrackNumber("1,2")); - assertEquals(1, FsReader.parseTrackNumber("1;2")); - assertEquals(0, FsReader.parseTrackNumber("00")); - assertEquals(0, FsReader.parseTrackNumber("0")); - assertEquals(0, FsReader.parseTrackNumber("0/0")); - assertEquals(0, FsReader.parseTrackNumber("")); - assertEquals(0, FsReader.parseTrackNumber("asdad")); - assertEquals(10, FsReader.parseTrackNumber("10")); - assertEquals(10, FsReader.parseTrackNumber("010")); - } + @Test + public void testParseTrackNumber() throws Exception + { + assertEquals(1, FsReader.parseTrackNumber("1")); + assertEquals(1, FsReader.parseTrackNumber("01")); + assertEquals(1, FsReader.parseTrackNumber("1/2")); + assertEquals(1, FsReader.parseTrackNumber("1,2")); + assertEquals(1, FsReader.parseTrackNumber("1;2")); + assertEquals(0, FsReader.parseTrackNumber("00")); + assertEquals(0, FsReader.parseTrackNumber("0")); + assertEquals(0, FsReader.parseTrackNumber("0/0")); + assertEquals(0, FsReader.parseTrackNumber("")); + assertEquals(0, FsReader.parseTrackNumber("asdad")); + assertEquals(10, FsReader.parseTrackNumber("10")); + assertEquals(10, FsReader.parseTrackNumber("010")); + } }