1111import iBoxDB .LocalServer .IO .*;
1212import iBoxDB .LocalServer .Replication .*;
1313
14- import iBoxDB .JDB .Example .Server .*;
14+ import iBoxDB .JDB .Example .Server .*;
1515import iBoxDB .JDB .Example .Server .Package ;
1616
17- // iBoxDB.Java v1.5.2
17+ // iBoxDB.Java v1.6
1818
1919public class JDB {
2020
2121 private static boolean isAndroid = false ;
2222
2323 // com.example.fapp
24- /*
25- public static void initAndroid(String packageName) {
26- isAndroid = true;
27- BoxFileStreamConfig.BaseDirectory = android.os.Environment
28- .getDataDirectory().getAbsolutePath()
29- + "/data/"
30- + packageName
31- + "/";
32- }
33- */
24+
25+ // public static void initAndroid(String packageName) {
26+ // isAndroid = true;
27+ // BoxFileStreamConfig.BaseDirectory = android.os.Environment
28+ // .getDataDirectory().getAbsolutePath()
29+ // + "/data/"
30+ // + packageName
31+ // + "/";
32+ // }
33+
3434 public static String run () {
3535 return run (false );
3636 }
@@ -143,8 +143,6 @@ public void setRegTime(Date value) {
143143 _regTime = value ;
144144 }
145145
146- // 20 chars, just for index , default 64 chars
147- @ BoxLength (20 )
148146 public String getName () {
149147 return _name ;
150148 }
@@ -153,8 +151,6 @@ public void setName(String value) {
153151 _name = value ;
154152 }
155153
156- // 256 bytes
157- @ BoxLength (256 )
158154 public Object [] getTags () {
159155 return _tags ;
160156 }
@@ -163,8 +159,6 @@ public void setTags(Object[] value) {
163159 _tags = value ;
164160 }
165161
166- // 40 bytes , default 64 bytes
167- @ BoxLength (40 )
168162 public BigDecimal getAmount () {
169163 return _amount ;
170164 }
@@ -175,14 +169,15 @@ public void setAmount(BigDecimal value) {
175169
176170 }
177171
172+ public static class MemberVIP extends Member {
173+ public int VIP ;
174+ }
175+
178176 public static class MemberInc extends Member {
179177 // increment type is long
180178 public long Version ;
181179 }
182180
183- // document Object , fixed length will faster (1024 bytes)
184- // [optional]
185- @ BoxLength (1024 )
186181 public static class Product extends HashMap <String , Object > {
187182
188183 public int Type () {
@@ -246,15 +241,22 @@ public PlatformConfig() {
246241
247242 public static class MyConfig extends PlatformConfig {
248243 public MyConfig (long addr ) {
244+ // -----Table Member------//
249245 this .EnsureTable (Member .class , "Member" , "ID" );
250- this .EnsureIndex (Member .class , "Member" , false , "Name" );
246+ // stringColumn(length), default length is 32
247+ this .EnsureIndex (Member .class , "Member" , "Name(20)" );
248+ // particular index for 'MemberVIP.VIP' column
249+ this .EnsureIndex (MemberVIP .class , "Member" , "VIP" );
251250
251+ // ------Table Product------//
252252 this .EnsureTable (Product .class , "Product" , "Type" , "UID" );
253253
254+ // ------Table TSpeed------//
254255 this .EnsureTable (Member .class , "TSpeed" , "ID" );
255256
257+ // ------Table MemberInc----//
256258 this .EnsureTable (MemberInc .class , "MemberInc" , "ID" );
257- //UpdateIncrement, 'Version'
259+ // * UpdateIncrement index 'Version'
258260 this .EnsureUpdateIncrementIndex (MemberInc .class ,
259261 "MemberInc" , "Version" );
260262 }
@@ -269,7 +271,6 @@ protected DatabaseConfig BuildDatabaseConfig(long address) {
269271
270272 public static class ReplicableServer extends LocalDatabaseServer {
271273
272-
273274 protected DatabaseConfig BuildDatabaseConfig (long address ) {
274275 if (address == ServerID .SlaveA_Address ) {
275276 return new PlatformConfig ();
@@ -371,15 +372,19 @@ public static StringBuilder Start() {
371372 m .setRegTime ((new GregorianCalendar (2013 , 1 , 2 ))
372373 .getTime ());
373374 m .setTags (new Object [] { "Nice" , "Strong" });
374- box .insert ("Member" , m );
375-
376- m = new Member ();
377- m .ID = box .newId (Member .IncTableID , 1 );
378- m .setName ("Kelly" );
379- m .setRegTime ((new GregorianCalendar (2013 , 1 , 3 ))
375+ // insert => bind(table).insert(value)
376+ box .bind ("Member" ).insert (m );
377+ m = null ;
378+
379+ MemberVIP mvip = new MemberVIP ();
380+ mvip .ID = box .newId (Member .IncTableID , 1 );
381+ mvip .setName ("Kelly" );
382+ mvip .setRegTime ((new GregorianCalendar (2013 , 1 , 3 ))
380383 .getTime ());
381- m .setTags (new Object [] { "Gamer" });
382- box .insert ("Member" , m );
384+ mvip .setTags (new Object [] { "Gamer" });
385+ mvip .VIP = 3 ;
386+ box .bind ("Member" ).insert (mvip );
387+ mvip = null ;
383388
384389 // Dynamic Column
385390 Product game = new Product ();
@@ -389,7 +394,7 @@ public static StringBuilder Start() {
389394 game .Name ("MoonFlight" );
390395
391396 game .put ("GameType" , "ACT" );
392- box .insert ("Product" , game );
397+ box .bind ("Product" ). insert ( game );
393398
394399 box .commit ().Assert ();
395400 } finally {
@@ -406,15 +411,14 @@ public static StringBuilder Start() {
406411 // Name -> Name , name -> name
407412 // getName()->Name , getname()->name
408413 // Name()->Name, name()->name
409- Member m = TestHelper .GetFrist (box .select (
410- Member .class , "from Member where Name==?" ,
411- "Kelly" ));
412- sb .append ("Kelly RegTime "
413- + m .getRegTime ().toString () + "\r \n " );
414- m .setName ("Kelly J" );
415- m .setAmount (BigDecimal .valueOf (100.0 ));
416- // Full Update
417- box .bind ("Member" , m .ID ).update (m );
414+ MemberVIP mvip = TestHelper .GetFrist (box .select (
415+ MemberVIP .class , "from Member where VIP>?" ,
416+ 0 ));
417+ sb .append (mvip .getName () + " RegTime "
418+ + mvip .getRegTime ().toString () + "\r \n " );
419+ mvip .setName ("Kelly J" );
420+ mvip .setAmount (BigDecimal .valueOf (100.0 ));
421+ box .bind ("Member" , mvip .ID ).update (mvip );
418422 box .commit ().Assert ();
419423 } finally {
420424 box .close ();
@@ -425,27 +429,12 @@ public static StringBuilder Start() {
425429 Member m = TestHelper .GetFrist (box .select (
426430 Member .class , "from Member where Name==?" ,
427431 "Kelly J" ));
428- sb .append ("Updated 1 : " + m .getName () + " "
432+ sb .append ("Updated : " + m .getName () + " "
429433 + m .getAmount () + "\r \n " );
430-
431- m .setAmount (m .getAmount ().add (
432- BigDecimal .valueOf (99.99 )));
433-
434- // Ignore Indexes Update
435- box .bind ("Member" , m .ID ).updateNoIndex (m );
436- box .commit ().Assert ();
437434 } finally {
438435 box .close ();
439436 }
440437
441- {
442- Member m = TestHelper .GetFrist (db .get ().select (
443- Member .class , "from Member where Name==?" ,
444- "Kelly J" ));
445- sb .append ("Updated 2: " + m .getName () + " "
446- + m .getAmount () + "\r \n " );
447- }
448-
449438 box = db .cube ();
450439 try {
451440 // Key-Value Style , Composite-Key Supported
@@ -505,7 +494,7 @@ public static StringBuilder MasterSlave() {
505494 Member m = new Member ();
506495 m .ID = box .newId (Member .IncTableID , 1 );
507496 m .setName ("S " + i );
508- box .insert ("Member" , m );
497+ box .bind ("Member" ). insert ( m );
509498 }
510499 box .commit ().Assert ();
511500 } finally {
@@ -571,7 +560,7 @@ public static StringBuilder MasterMaster() {
571560 m .ID = box .newId (Member .IncTableID , 1 ) * 1000
572561 + ServerID .MasterA_Address ;
573562 m .setName ("A" + i );
574- box .insert ("Member" , m );
563+ box .bind ("Member" ). insert ( m );
575564 }
576565 box .commit ().Assert ();
577566 } finally {
@@ -585,7 +574,7 @@ public static StringBuilder MasterMaster() {
585574 m .ID = box .newId (Member .IncTableID , 1 ) * 1000
586575 + ServerID .MasterB_Address ;
587576 m .setName ("B" + i );
588- box .insert ("Member" , m );
577+ box .bind ("Member" ). insert ( m );
589578 }
590579 box .commit ().Assert ();
591580 } finally {
@@ -605,6 +594,10 @@ public static StringBuilder MasterMaster() {
605594 recycler .getPackage ().clear ();
606595 }
607596 for (Package p : buffer ) {
597+ if (p .Socket .DestAddress == Long .MAX_VALUE ) {
598+ // default replicate address
599+ continue ;
600+ }
608601 if (p .Socket .DestAddress == ServerID .MasterA_Address ) {
609602 (new BoxData (p .OutBox )).masterReplicate (masterA );
610603 }
@@ -736,7 +729,7 @@ public void run() {
736729 m .setName (o + "_" + m .ID );
737730 m .setAge (1 );
738731
739- box .insert ("TSpeed" , m );
732+ box .bind ("TSpeed" ). insert ( m );
740733 }
741734 box .commit ().Assert ();
742735 } finally {
0 commit comments