]> git.mxchange.org Git - jcore.git/commitdiff
Some additions to jcore:
authorRoland Haeder <roland@mxchange.org>
Thu, 13 Aug 2015 12:22:51 +0000 (14:22 +0200)
committerRoland Haeder <roland@mxchange.org>
Thu, 13 Aug 2015 13:33:53 +0000 (15:33 +0200)
- renamed isValueEqual() to isFieldValueEqual() as this method does check a class field (aka. attribute)
- now search criteria can be limit and skip found matches
- added support for string criteria

Signed-off-by:Roland Häder <roland@mxchange.org>

src/org/mxchange/jcore/BaseFrameworkSystem.java
src/org/mxchange/jcore/FrameworkInterface.java
src/org/mxchange/jcore/contact/BaseContact.java
src/org/mxchange/jcore/criteria/BaseCriteria.java
src/org/mxchange/jcore/criteria/Criteria.java
src/org/mxchange/jcore/criteria/searchable/SearchCriteria.java
src/org/mxchange/jcore/criteria/searchable/SearchableCritera.java
src/org/mxchange/jcore/database/backend/mysql/MySqlDatabaseBackend.java

index 515981d72ae2a63dd8725ecbc7d49ee48e1f81f9..8bbf1ea3a177449c62551534f13d176cb1189929 100644 (file)
@@ -327,7 +327,7 @@ public class BaseFrameworkSystem implements FrameworkInterface {
         * @throws java.lang.reflect.InvocationTargetException Any other problems?
         */
        @Override
-       public boolean isValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+       public boolean isFieldValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
                // Not implemented
                throw new UnsupportedOperationException(MessageFormat.format("Not implemented. columnName={0},bool={1}", columnName, bool)); //NOI18N
        }
index 0e44d7ee5dbbef87360391c5ef49262cad552c29..28bcfe192f718dc9a351ad14ea5d3e49cdb1a726 100644 (file)
@@ -91,7 +91,7 @@ public interface FrameworkInterface {
         * @throws java.lang.IllegalAccessException If the method cannot be accessed
         * @throws java.lang.reflect.InvocationTargetException Any other problems?
         */
-       public boolean isValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException;
+       public boolean isFieldValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException;
 
        /**
         * Some "getter for a value from given column name. This name will be
index e00f46392f261bb619467c6a22a2ec0ff1bfc041..ae2b1fcaa192b3170c724c4272702961281f7341 100644 (file)
@@ -571,7 +571,7 @@ public class BaseContact extends BaseFrameworkSystem implements Contact {
         * @return Whether all conditions are met
         */
        @Override
-       public boolean isValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+       public boolean isFieldValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
                // Trace message
                this.getLogger().trace(MessageFormat.format("columnName={0},bool={1} - CALLED!", columnName, bool));
 
index c95311b380d3edf1e09c807ce3b63a0f36a8236e..bb3550d8029254b920c0d1737587c132ccf07965 100644 (file)
@@ -46,6 +46,12 @@ public class BaseCriteria extends BaseFrameworkSystem implements Criteria {
                this.criteria.put(key, value);
        }
 
+       @Override
+       public void addCriteria (final String key, final String value) {
+               // Add to map
+               this.criteria.put(key, value);
+       }
+
        /**
         * Gets all entries as a key-value pair
         *
index 74a36b66ddd195ac70a7c8857472e9c1149e9a99..bddd6d0688b9f4c577d055aa86e02156e2523dc3 100644 (file)
@@ -27,13 +27,21 @@ import org.mxchange.jcore.FrameworkInterface;
  */
 public interface Criteria extends FrameworkInterface {
        /**
-        * Adds a binary criteria
+        * Adds a boolean criteria
         *
         * @param key Key of criteria
         * @param value Value of criteria
         */
        public void addCriteria (final String key, final boolean value);
 
+       /**
+        * Adds a string criteria
+        *
+        * @param key Key of criteria
+        * @param value Value of criteria
+        */
+       public void addCriteria (final String key, final String value);
+
        /**
         * Gets all values from underlaying map in an iterator.
         *
index ee26956700659d93b47d54fe547da3058614bd66..fbd8894063278334b5ea238802e0ced8db529791 100644 (file)
@@ -27,12 +27,42 @@ import org.mxchange.jcore.database.storage.Storeable;
  * @author Roland Haeder
  */
 public class SearchCriteria extends BaseCriteria implements SearchableCritera {
+       /**
+        * Limit of matches
+        */
+       private int limit;
+
+       /**
+        * Skipping of matches
+        */
+       private int skip;
+
        /**
         * Default constructor
         */
        public SearchCriteria () {
        }
 
+       @Override
+       public int getLimit () {
+               return this.limit;
+       }
+
+       @Override
+       public final void setLimit (final int limit) {
+               this.limit = limit;
+       }
+
+       @Override
+       public int getSkip () {
+               return this.skip;
+       }
+
+       @Override
+       public final void setSkip (final int skip) {
+               this.skip = skip;
+       }
+
        @Override
        public boolean matches (final Storeable storeable) {
                // Trace message
index bc8992e5927b636c9bfd5281520a360c30da8c68..8455ba519aa160aee8aba380266375a7efa89b73 100644 (file)
@@ -25,7 +25,6 @@ import org.mxchange.jcore.database.storage.Storeable;
  * @author Roland Haeder
  */
 public interface SearchableCritera extends Criteria {
-
        /**
         * Checks if the given instance of a Storeable class matches
         *
@@ -33,4 +32,32 @@ public interface SearchableCritera extends Criteria {
         * @return Whether the Storeable instance matches
         */
        public boolean matches (final Storeable storeable);
+
+       /**
+        * Setter for limit of possible matches
+        *
+        * @param limit Limit of matches
+        */
+       public void setLimit (final int limit);
+
+       /**
+        * Getter for limit of possible matches
+        *
+        * @return Limit of matches
+        */
+       public int getLimit ();
+
+       /**
+        * Setter for skipping of possible matches
+        *
+        * @param skip Skipping of matches
+        */
+       public void setSkip (final int skip);
+
+       /**
+        * Getter for skipping of possible matches
+        *
+        * @return Skipping of matches
+        */
+       public int getSkip ();
 }
index 7f190126c51638ed8b21b5c5afbe7b06df7efbc1..2d71d90c2f2172b0b4f892bd518e8788d9958dab 100644 (file)
@@ -161,6 +161,18 @@ public class MySqlDatabaseBackend extends BaseDatabaseBackend implements Databas
                        }
                }
 
+               // Is limit set?
+               if (critera.getLimit() > 0) {
+                       // Is skip set?
+                       if (critera.getSkip() > 0) {
+                               // Limit with skip
+                               query.append(String.format(" LIMIT %d,%d", critera.getSkip(), critera.getLimit()));
+                       } else {
+                               // Only limit
+                               query.append(String.format(" LIMIT %d", critera.getLimit()));
+                       }
+               }
+
                // Full statement is complete here, better log it
                this.getLogger().debug(MessageFormat.format("query={0} is complete.", query));