1// Initializing database instance
2BasicDatabase db = new BasicDatabase(getContext());
3// Getting mapper instance
4RandomMapper mapper = (RandomMapper) db.getMapper(RandomModel.class);
5// Initializing model
6RandomModel toInsert = new RandomModel();
7// Setting model fields
8toInsert.randomInt = 10;
9...
10// Saving model with save method
11mapper.save(toInsert);
12// Saving model with direct insert call
13mapper.insert(toInsert);
Click to view BasicDatabase.class
:
1@KITTY_DATABASE(
2 databaseName = "basic_database",
3 domainPackageNames = {"net.akaish.kittyormdemo.sqlite.basicdb"},
4 logTag = LOG_TAG,
5 isLoggingOn = true,
6 isProductionOn = true,
7 isPragmaOn = true
8)
9@KITTY_DATABASE_REGISTRY(
10 domainPairs = {
11 @KITTY_REGISTRY_PAIR(model = ComplexRandomModel.class, mapper = ComplexRandomMapper.class),
12 @KITTY_REGISTRY_PAIR(model = IndexesAndConstraintsModel.class),
13 @KITTY_REGISTRY_PAIR(model = RandomModel.class, mapper = RandomMapper.class)
14 }
15)
16public class BasicDatabase extends KittyDatabase {
17
18 public static final String LOG_TAG = "BASIC DB DEMO";
19
20 /**
21 * KittyORM main database class that represents bootstrap and holder for all related with database
22 * components.
23 * <br> See {@link KittyDatabase#KittyDatabase(Context, String)} for more info.
24 *
25 * @param ctx
26 */
27 public BasicDatabase(Context ctx) {
28 super(ctx);
29 }
30
31}
Click to view AbstractRandomModel.class
:
1public abstract class AbstractRandomModel extends KittyModel {
2
3 public static final String RND_INTEGER_CNAME = "rnd_int_custom_column_name";
4 public static final String RND_ANIMAL_CNAME = "rndanimal";
5
6 @KITTY_COLUMN(
7 isIPK = true,
8 columnOrder = 0
9 )
10 public Long id;
11
12 @KITTY_COLUMN(
13 columnOrder = 1
14 )
15 public int randomInt;
16
17 @KITTY_COLUMN(
18 columnOrder = 2,
19 columnName = RND_INTEGER_CNAME
20 )
21 public Integer randomInteger;
22
23 @KITTY_COLUMN(
24 columnOrder = 3,
25 columnName = RND_ANIMAL_CNAME
26 )
27 public Animals randomAnimal;
28
29 @KITTY_COLUMN(
30 columnOrder = 4,
31 columnAffinity = TypeAffinities.TEXT
32 )
33 public String randomAnimalName;
34}
Click to view RandomModel.class
:
1@KITTY_TABLE
2@KITTY_EXTENDED_CRUD(extendedCrudController = RandomMapper.class)
3@INDEX(
4 indexName = "random_animal_index",
5 indexColumns = {AbstractRandomModel.RND_ANIMAL_CNAME}
6)
7public class RandomModel extends AbstractRandomModel {
8
9
10 public RandomModel() {
11 super();
12 }
13
14 @KITTY_COLUMN(columnOrder = 5)
15 public String randomAnimalSays;
16
17 @Override
18 public String toString() {
19 return new StringBuffer(64).append("[ id = ")
20 .append(id)
21 .append("; randomInt = ")
22 .append(Integer.toString(randomInt))
23 .append("; randomInteger = ")
24 .append(randomInteger)
25 .append("; randomAnimal = ")
26 .append(randomAnimal)
27 .append("; randomAnimnalLocalizedName = ")
28 .append(randomAnimalName)
29 .append("; randomAnimalSays = ")
30 .append(randomAnimalSays).append(" ]").toString();
31 }
32}
Click to view RandomMapper.class
:
1package net.akaish.kittyormdemo.sqlite.basicdb;
2
3import net.akaish.kitty.orm.KittyMapper;
4import net.akaish.kitty.orm.KittyModel;
5import net.akaish.kitty.orm.configuration.conf.KittyTableConfiguration;
6import net.akaish.kitty.orm.query.QueryParameters;
7import net.akaish.kitty.orm.query.conditions.SQLiteCondition;
8import net.akaish.kitty.orm.query.conditions.SQLiteConditionBuilder;
9import net.akaish.kitty.orm.query.conditions.SQLiteOperator;
10import net.akaish.kitty.orm.util.KittyConstants;
11import net.akaish.kittyormdemo.sqlite.misc.Animals;
12
13import static net.akaish.kitty.orm.query.conditions.SQLiteOperator.AND;
14import static net.akaish.kitty.orm.query.conditions.SQLiteOperator.LESS_OR_EQUAL;
15import static net.akaish.kitty.orm.query.conditions.SQLiteOperator.LESS_THAN;
16import static net.akaish.kitty.orm.query.conditions.SQLiteOperator.GREATER_OR_EQUAL;
17import static net.akaish.kitty.orm.query.conditions.SQLiteOperator.GREATER_THAN;
18import static net.akaish.kittyormdemo.sqlite.basicdb.AbstractRandomModel.RND_ANIMAL_CNAME;
19
20import java.util.List;
21
22
23/**
24 * Created by akaish on 09.08.18.
25 * @author akaish (Denis Bogomolov)
26 */
27public class RandomMapper extends KittyMapper {
28
29 public <M extends KittyModel> RandomMapper(KittyTableConfiguration tableConfiguration,
30 M blankModelInstance,
31 String databasePassword) {
32 super(tableConfiguration, blankModelInstance, databasePassword);
33 }
34
35 protected SQLiteCondition getAnimalCondition(Animals animal) {
36 return new SQLiteConditionBuilder()
37 .addColumn(RND_ANIMAL_CNAME)
38 .addSQLOperator("=")
39 .addObjectValue(animal)
40 .build();
41 }
42
43 public long deleteByRandomIntegerRange(int start, int end) {
44 return deleteWhere("#?randomInt >= ? AND #?randomInt <= ?", start, end);
45 }
46
47 public long deleteByAnimal(Animals animal) {
48 return deleteWhere(getAnimalCondition(animal));
49 }
50
51 public List<RandomModel> findByAnimal(Animals animal, long offset, long limit, boolean groupingOn) {
52 SQLiteCondition condition = getAnimalCondition(animal);
53 QueryParameters qparam = new QueryParameters();
54 qparam.setLimit(limit).setOffset(offset);
55 if(groupingOn)
56 qparam.setGroupByColumns(RND_ANIMAL_CNAME);
57 else
58 qparam.setGroupByColumns(KittyConstants.ROWID);
59 return findWhere(condition, qparam);
60 }
61
62 public List<RandomModel> findByIdRange(long fromId, long toId, boolean inclusive, Long offset, Long limit) {
63 SQLiteCondition condition = new SQLiteConditionBuilder()
64 .addColumn("id")
65 .addSQLOperator(inclusive ? GREATER_OR_EQUAL : GREATER_THAN)
66 .addValue(fromId)
67 .addSQLOperator(AND)
68 .addColumn("id")
69 .addSQLOperator(inclusive ? LESS_OR_EQUAL : LESS_THAN)
70 .addValue(toId)
71 .build();
72 QueryParameters qparam = new QueryParameters();
73 qparam.setLimit(limit).setOffset(offset).setGroupByColumns(KittyConstants.ROWID);
74 return findWhere(condition, qparam);
75 }
76
77 public List<RandomModel> findAllRandomModels(Long offset, Long limit) {
78 QueryParameters qparam = new QueryParameters();
79 qparam.setLimit(limit).setOffset(offset).setGroupByColumns(KittyConstants.ROWID);
80 return findAll(qparam);
81 }
82
83}
Click to view ComplexRandomModel.class
:
1@KITTY_TABLE
2@KITTY_EXTENDED_CRUD(extendedCrudController = ComplexRandomMapper.class)
3public class ComplexRandomModel extends AbstractRandomModel {
4
5 public ComplexRandomModel() {
6 super();
7 }
8
9
10 // Primitives
11 // (boolean, int, byte, double, long, short, float)
12 @KITTY_COLUMN(columnOrder = 5)
13 public boolean boolF;
14
15
16 @KITTY_COLUMN(columnOrder = 6)
17 public byte byteF;
18
19 @KITTY_COLUMN(columnOrder = 7)
20 public double doubleF;
21
22 @KITTY_COLUMN(columnOrder = 8)
23 public long longF;
24
25 @KITTY_COLUMN(columnOrder = 9)
26 public short shortF;
27
28 @KITTY_COLUMN(columnOrder = 10)
29 public float floatF;
30
31 // Byte array
32 @KITTY_COLUMN(columnOrder = 11)
33 public byte[] byteArray;
34
35 // String (TEXT) (String, BigDecimal, BigInteger, Enum)
36 @KITTY_COLUMN(columnOrder = 12)
37 public String stringF;
38
39 @KITTY_COLUMN(columnOrder = 13)
40 public BigDecimal bigDecimalF;
41
42 @KITTY_COLUMN(columnOrder = 14)
43 public BigInteger bigIntegerF;
44
45 @KITTY_COLUMN(columnOrder = 15)
46 public Uri uriF;
47
48 @KITTY_COLUMN(columnOrder = 16)
49 public File fileF;
50
51 @KITTY_COLUMN(columnOrder = 17)
52 public Currency currencyF;
53
54 // SD
55 @KITTY_COLUMN(
56 columnOrder = 18,
57 columnAffinity = TypeAffinities.TEXT
58 )
59 @KITTY_COLUMN_SERIALIZATION
60 public AnimalSounds stringSDF;
61
62 @KITTY_COLUMN(columnOrder = 19)
63 public SomeColours bitmapColour;
64
65 @KITTY_COLUMN(
66 columnOrder = 20,
67 columnAffinity = TypeAffinities.BLOB
68 )
69 @KITTY_COLUMN_SERIALIZATION
70 public Bitmap byteArraySDF;
71
72 String stringSDFSerialize() {
73 if(stringSDF == null) return null;
74 return new GsonBuilder().create().toJson(stringSDF);
75 }
76
77 AnimalSounds stringSDFDeserialize(String cvData) {
78 if(cvData == null) return null;
79 if(cvData.length() == 0) return null;
80 return new GsonBuilder().create().fromJson(cvData, AnimalSounds.class);
81 }
82
83 public byte[] byteArraySDFSerialize() {//byteArraySDFSerialize
84 if(byteArraySDF == null) return null;
85 ByteArrayOutputStream bmpStream = new ByteArrayOutputStream();
86 byteArraySDF.compress(Bitmap.CompressFormat.PNG, 100, bmpStream);
87 return bmpStream.toByteArray();
88 }
89
90 public Bitmap byteArraySDFDeserialize(byte[] cursorData) {
91 if(cursorData == null) return null;
92 if(cursorData.length == 0) return null;
93 return BitmapFactory.decodeByteArray(cursorData, 0, cursorData.length);
94 }
95
96 // Primitive wrappers Boolean, Integer, Byte, Double, Short or Float
97 @KITTY_COLUMN(columnOrder = 21)
98 public Boolean boolFF;
99
100
101 @KITTY_COLUMN(columnOrder = 22)
102 public Byte byteFF;
103
104 @KITTY_COLUMN(columnOrder = 23)
105 public Double doubleFF;
106
107 @KITTY_COLUMN(columnOrder = 24)
108 public Short shortFF;
109
110 @KITTY_COLUMN(columnOrder = 25)
111 public Float floatFF;
112
113
114 // Long represented types Long, Date, Calendar, Timestamp
115 @KITTY_COLUMN(columnOrder = 26)
116 public Long longFF;
117
118 @KITTY_COLUMN(columnOrder = 27)
119 public Date dateF;
120
121 @KITTY_COLUMN(columnOrder = 28)
122 public Calendar calendarF;
123
124 @KITTY_COLUMN(columnOrder = 29)
125 public Timestamp timestampF;
126
127 @Override
128 public String toString() {
129 StringBuffer out = new StringBuffer(256);
130 out.append("Long id : "+id+"\r\n");
131 out.append("int randomInt : "+randomInt+"\r\n");
132 out.append("String stringF : "+stringF+"\r\n");
133 out.append("BigInteger bigIntegerF : "+bigIntegerF+"\r\n");
134 out.append("SomeColours bitmapColour : "+bitmapColour+"\r\n");
135 out.append("Short shortFF : "+shortFF+"\r\n");
136 out.append("Timestamp timestampF (HReadable) : "+timestampF+"\r\n");
137 out.append("AnimalSounds stringSDF (HReadable) : "+stringSDFSerialize()+"\r\n");
138 out.append("Uri uriF : " + uriF+"\r\n");
139 out.append("Currency currencyF : " + currencyF.getSymbol()+"\r\n");
140 out.append("... \r\n");
141 return out.toString();
142 }
143
144 public String toShortString() {
145 StringBuffer out = new StringBuffer(256);
146 out.append("[ Long id : "+id+"; ");
147 out.append("int randomInt : "+randomInt+"; ");
148 out.append("String stringF : "+stringF+"; ");
149 out.append("BigInteger bigIntegerF : "+bigIntegerF+"; ");
150 out.append("SomeColours bitmapColour : "+bitmapColour+"; ");
151 out.append("Short shortFF : "+shortFF+"; ");
152 out.append("Timestamp timestampF (HReadable) : "+timestampF+"; ... ]");
153 return out.toString();
154 }
155
156 @Deprecated
157 public String toHTMLString() {
158 StringBuffer out = new StringBuffer(2048);
159 out.append("<br>Long id : "+id.toString()+"\r\n");
160 out.append("<br><b>PRIMITIVES</b>"+"\r\n");
161 out.append("<br>boolean boolF : "+Boolean.toString(boolF)+"\r\n");
162 out.append("<br>int randomInt : "+Integer.toString(randomInt)+"\r\n");
163 out.append("<br>byte byteF : "+Byte.toString(byteF)+"\r\n");
164 out.append("<br>double doubleF : "+Double.toString(doubleF)+"\r\n");
165 out.append("<br>long longF : "+Long.toString(longF)+"\r\n");
166 out.append("<br>short shortF : "+Short.toString(shortF)+"\r\n");
167 out.append("<br>float floatF : "+Float.toString(floatF)+"\r\n");
168 out.append("<br>byte[] byteArray : "+byteArrayToString(byteArray)+"\r\n");
169 out.append("<br><b>STRING AFFINITIES</b>"+"\r\n");
170 out.append("<br>String randomAnimalName : "+randomAnimalName+"\r\n");
171 out.append("<br>String stringF : "+stringF+"\r\n");
172 out.append("<br>BigDecimal bigDecimalF : "+bigDecimalF.toEngineeringString()+"\r\n");
173 out.append("<br>BigInteger bigIntegerF : "+bigIntegerF.toString()+"\r\n");
174 out.append("<br>Animals randomAnimal : "+randomAnimal.toString()+"\r\n");
175 out.append("<br><b>SERIALIZATION AND DESERIALIZATION</b>"+"\r\n");
176 out.append("<br>AnimalSounds stringSDF : "+stringSDFSerialize()+"\r\n");
177 out.append("<br>SomeColours bitmapColour : "+bitmapColour.toString()+"\r\n");
178 out.append("<br><b>PRIMITIVE WRAPPERS</b>"+"\r\n");
179 out.append("<br>Boolean boolFF : "+boolFF.toString()+"\r\n");
180 out.append("<br>Integer randomInteger : "+randomInteger.toString()+"\r\n");
181 out.append("<br>Byte byteFF : "+byteFF.toString()+"\r\n");
182 out.append("<br>Double doubleFF : "+doubleFF.toString()+"\r\n");
183 out.append("<br>Short shortFF : "+shortFF.toString()+"\r\n");
184 out.append("<br>Float floatFF :"+floatFF.toString()+"\r\n");
185 out.append("<br><b>LONG REPRESENTED TYPES</b>"+"\r\n");
186 out.append("<br>Long longFF : "+longFF.toString()+"\r\n");
187 out.append("<br>Date dateF : "+Long.toString(dateF.getTime())+"\r\n");
188 out.append("<br>Calendar calendarF : "+Long.toString(calendarF.getTimeInMillis())+"\r\n");
189 out.append("<br>Timestamp timestampF : "+Long.toString(timestampF.getTime())+"\r\n");
190 out.append("<br>Date dateF (HReadable) : "+dateF.toString()+"\r\n");
191 out.append("<br>Calendar calendarF (HReadable) : "+calendarF.getTime().toString()+"\r\n");
192 out.append("<br>Timestamp timestampF (HReadable) : "+timestampF.toString()+"\r\n");
193 return out.toString();
194 }
195
196 public String byteArrayToString(byte[] toString) {
197 String[] strings = new String[toString.length];
198 for(int i = 0; i < toString.length; i++) {
199 strings[i] = Byte.toString(toString[i]);
200 }
201 return KittyUtils.implodeWithCommaInBKT(strings);
202 }
203}
Click to view IndexesAndConstraintsModel.class
:
1@KITTY_TABLE(tableName = "cai")
2@FOREIGN_KEY_T(
3 name = "CAI_FK",
4 columns = {IndexesAndConstraintsModel.RANDOM_ID_CNAME},
5 reference = @FOREIGN_KEY_REFERENCE(
6 foreignTableName = "random",
7 foreignTableColumns = {"id"},
8 onUpdate = OnUpdateDeleteActions.CASCADE,
9 onDelete = OnUpdateDeleteActions.CASCADE
10 )
11)
12@INDEX(indexColumns = {"creation_date"})
13public class IndexesAndConstraintsModel extends KittyModel {
14 static final String RANDOM_ID_CNAME = "rnd_id";
15
16 @KITTY_COLUMN(columnOrder = 0)
17 @PRIMARY_KEY
18 @NOT_NULL
19 public Long id;
20
21 @KITTY_COLUMN(columnOrder = 1)
22 @NOT_NULL
23 @UNIQUE
24 public Long rndId;
25
26 @KITTY_COLUMN(columnOrder = 2)
27 @CHECK(checkExpression = "animal IN (\"CAT\", \"TIGER\", \"LION\")") // only cats allowed to this party
28 public Animals animal;
29
30 @KITTY_COLUMN(columnOrder = 3)
31 @DEFAULT(signedInteger = 28) // You can choose for options for default declaration, if nothing set than 0 value would be used
32 @NOT_NULL
33 public Integer defaultNumber;
34
35 @KITTY_COLUMN(columnOrder = 4)
36 @DEFAULT(
37 predefinedLiteralValue = LiteralValues.CURRENT_DATE
38 )
39 @NOT_NULL
40 public String creationDate;
41
42 @KITTY_COLUMN(columnOrder = 5)
43 @DEFAULT(
44 predefinedLiteralValue = LiteralValues.CURRENT_TIMESTAMP
45 )
46 @ONE_COLUMN_INDEX(unique = true, indexName = "IAC_unique_index_creation_timestamp")
47 @NOT_NULL
48 public Timestamp creationTmstmp;
49
50 @Override
51 public String toString() {
52 StringBuilder sb = new StringBuilder(64);
53 sb.append("[ RowID = ").append(getRowID())
54 .append(" ; id = ").append(id)
55 .append(" ; rndId = ").append(rndId)
56 .append(" ; animal = ").append(animal)
57 .append(" ; defaultNumber = ").append(defaultNumber)
58 .append(" ; creationDate = ").append(creationDate)
59 .append(" ; creationTmstmp = ").append(creationTmstmp).append(" ]");
60 return sb.toString();
61 }
62}
Click to view RNDRandomModelFactory.class
:
1public class RNDRandomModelFactory {
2
3 private final Context context;
4 private final Random randomizer;
5
6 private final SparseArray<String> randomAnimalSays = new SparseArray<>();
7 private final SparseArray<String> randomAnimalLocalizedName = new SparseArray<>();
8
9 public RNDRandomModelFactory(Context context) {
10 super();
11 this.context = context;
12 this.randomizer = new Random();
13
14 // Lol, getContext().getString() method is slow, calling for each new random model this method twice causes 55% of all execution time of generating new random model (!)
15 // Right now getting those string causes only 14% of execution time
16 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.BEAR), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.BEAR)));
17 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.CAT), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.CAT)));
18 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.DOG), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.DOG)));
19 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.GOAT), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.GOAT)));
20 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.LION), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.LION)));
21 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.SHEEP), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.SHEEP)));
22 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.TIGER), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.TIGER)));
23 randomAnimalSays.append(Animals.getLocalizedAnimalSaysResource(Animals.WOLF), context.getString(Animals.getLocalizedAnimalSaysResource(Animals.WOLF)));
24
25
26 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.BEAR), context.getString(Animals.getLocalizedAnimalNameResource(Animals.BEAR)));
27 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.CAT), context.getString(Animals.getLocalizedAnimalNameResource(Animals.CAT)));
28 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.DOG), context.getString(Animals.getLocalizedAnimalNameResource(Animals.DOG)));
29 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.GOAT), context.getString(Animals.getLocalizedAnimalNameResource(Animals.GOAT)));
30 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.LION), context.getString(Animals.getLocalizedAnimalNameResource(Animals.LION)));
31 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.SHEEP), context.getString(Animals.getLocalizedAnimalNameResource(Animals.SHEEP)));
32 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.TIGER), context.getString(Animals.getLocalizedAnimalNameResource(Animals.TIGER)));
33 randomAnimalLocalizedName.append(Animals.getLocalizedAnimalNameResource(Animals.WOLF), context.getString(Animals.getLocalizedAnimalNameResource(Animals.WOLF)));
34
35 }
36
37 public RandomModel newRandomModel() {
38 RandomModel out = new RandomModel();
39 out.randomInt = randomizer.nextInt();
40 out.randomInteger = randomizer.nextInt();
41 out.randomAnimal = Animals.rndAnimal(randomizer);
42 out.randomAnimalSays = randomAnimalSays.get(Animals.getLocalizedAnimalSaysResource(out.randomAnimal));
43 out.randomAnimalName = randomAnimalLocalizedName.get(Animals.getLocalizedAnimalNameResource(out.randomAnimal));
44 return out;
45 }
46}
Click to view Lesson2Tab1New.class
:
1public class Lesson2Tab1New extends Lesson2BaseFragment {
2
3 private BasicDatabase db;
4
5 private EditText randomIntET;
6 private EditText randomIntegerET;
7
8 private EditText randomAnimalNameET;
9 private EditText randomAnimalSaysET;
10
11
12
13 private Button saveButton;
14
15
16 public Lesson2Tab1New() {};
17
18 @Override
19 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
20 View rootView = inflater.inflate(R.layout.lesson2_tab1_new, container, false);
21
22
23 randomAnimalNameET = (EditText) rootView.findViewById(R.id.l2_t1_et_animal_localised_name);
24 randomAnimalSaysET = (EditText) rootView.findViewById(R.id.l2_t1_et_animal_says);
25
26 randomIntET = (EditText) rootView.findViewById(R.id.l2_t1_et_random_int);
27 randomIntegerET = (EditText) rootView.findViewById(R.id.l2_t1_et_random_integer);
28
29
30
31 saveButton = (Button) rootView.findViewById(R.id._l2_t1_save_button);
32 saveButton.setOnClickListener(new View.OnClickListener() {
33 @Override
34 public void onClick(View v) {
35 go();
36 }
37 });
38
39 setUpExpandedList(
40 rootView,
41 R.id._l2_t1_expanded_panel_lw,
42 R.id._l2_t1_expanded_panel_text,
43 R.string._l2_t1_expanded_panel_text_pattern
44 );
45
46 setAnimalSpinner(rootView, R.id.l2_t1_spinner, new AdapterView.OnItemSelectedListener() {
47 @Override
48 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
49 String enumStringName = (String) animalSpinner.getAdapter().getItem(position);
50 if(enumStringName.equals(animalAdapter.getItem(animalAdapter.getCount()))) {
51 // do nothing, skip spinner hint
52 } else {
53 Animals animal = Animals.valueOf(enumStringName);
54 randomAnimalNameET.setText(Animals.getLocalizedAnimalNameResource(animal));
55 randomAnimalSaysET.setText(Animals.getLocalizedAnimalSaysResource(animal));
56 }
57 }
58
59 @Override
60 public void onNothingSelected(AdapterView<?> parent) {
61
62 }
63 });
64
65
66 getDb().printPregeneratedCreateSchemaToLog("KittyORM BDB C");
67 getDb().printPregeneratedDropSchemaToLog("KittyORM BDB D");
68
69 return rootView;
70 }
71
72 void textWarnDialog() {
73 getLessonActivity().showWarningDialog(R.string._warning_dialog_title, R.string._warning_dialog_test_message_big, R.string._warning_dialog_ok_button_text);
74 }
75
76 void go() {
77 String randomInt = randomIntET.getText().toString();
78 String randomInteger = randomIntegerET.getText().toString();
79 String animalEnumStringValue = animalSpinner.getSelectedItem().toString();
80
81 if(animalEnumStringValue.equals(animalAdapter.getItem(animalAdapter.getCount()))) {
82 getLessonActivity().showWarningDialog(R.string._warning_dialog_title, R.string._l2_t1_warning_text, R.string._warning_dialog_ok_button_text);
83 return;
84 }
85 if(randomInt == null || randomInteger == null) {
86 getLessonActivity().showWarningDialog(R.string._warning_dialog_title, R.string._l2_t1_warning_text, R.string._warning_dialog_ok_button_text);
87 return;
88 }
89 if(randomInt.length() == 0 || randomInteger.length() == 0) {
90 getLessonActivity().showWarningDialog(R.string._warning_dialog_title, R.string._l2_t1_warning_text, R.string._warning_dialog_ok_button_text);
91 return;
92 }
93 int rndInt = 0; Integer rndInteger = null;
94 try {
95 rndInt = Integer.parseInt(randomInt);
96 rndInteger = Integer.valueOf(randomInteger);
97 } catch (Exception e) {
98 getLessonActivity().showWarningDialog(R.string._warning_dialog_title, R.string._l2_t1_warning_bad_input, R.string._warning_dialog_ok_button_text);
99 return;
100 }
101 RandomModel toInsert = new RandomModel();
102 toInsert.randomInt = rndInt;
103 toInsert.randomInteger = rndInteger;
104 Animals animal = Animals.valueOf(animalEnumStringValue);
105 toInsert.randomAnimal = animal;
106 toInsert.randomAnimalName = getString(Animals.getLocalizedAnimalNameResource(animal));
107 toInsert.randomAnimalSays = getString(Animals.getLocalizedAnimalSaysResource(animal));
108 KittyMapper mapper = getMapper();
109 long rowid = mapper.insert(toInsert);
110 if(rowid > 0) {
111 addNewEventToExpandedPanel(format(getString(R.string._l2_t1_expanded_added), rowid, toInsert, mapper.countAll()));
112 } else {
113 addNewEventToExpandedPanel(format(getString(R.string._l2_t1_expanded_error), toInsert));
114 }
115 mapper.close();
116 }
117
118 @Override
119 public void onCreate(Bundle bundle) {
120 super.onCreate(bundle);
121 }
122
123 // Fab menu section
124
125 @Override
126 public View.OnClickListener helpFabMenuAction() {
127 return new View.OnClickListener() {
128 @Override
129 public void onClick(View v) {
130 ((KittyTutorialActivity)getActivity()).showWebViewDialog(LessonsUriConstants.L2_T1_TUTORIAL);
131 }
132 };
133 }
134
135 @Override
136 public View.OnClickListener sourceFabMenuAction() {
137 return new View.OnClickListener() {
138 @Override
139 public void onClick(View v) {
140 ((KittyTutorialActivity)getActivity()).showWebViewDialog(LessonsUriConstants.L2_T1_SOURCE);
141 }
142 };
143 }
144
145 @Override
146 public View.OnClickListener schemaFabMenuAction() {
147 return new View.OnClickListener() {
148 @Override
149 public void onClick(View v) {
150 ((KittyTutorialActivity)getActivity()).showWebViewDialog(LessonsUriConstants.L2_T1_SCHEMA);
151 }
152 };
153 }
154
155 @Override
156 protected int snackbarMessageResource() {
157 return R.string._l2_t1_snackbar_message;
158 }
159}