diff --git a/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java b/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java index 793f163276ab92eba07dff59bd391be3cb52ccb0..06cd583ff012c687336408cbef598c4c188d5896 100644 --- a/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java +++ b/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java @@ -2,6 +2,8 @@ package com.yearthreeproject.xbframework; import android.content.Intent; import android.graphics.Color; +import android.icu.text.SimpleDateFormat; +import android.os.Build; import android.os.Bundle; import android.util.TypedValue; import android.view.Menu; @@ -14,6 +16,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; @@ -21,6 +24,8 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.util.Calendar; + import static android.util.Log.d; public class BoxesActivity extends AppCompatActivity { @@ -132,11 +137,15 @@ public class BoxesActivity extends AppCompatActivity { inFiveAvailableBoxes[j].setId(j); inFiveAvailableBoxes[j].setOnClickListener(new View.OnClickListener() { + @RequiresApi(api = Build.VERSION_CODES.N) @Override public void onClick(View v) { try { boolean locked = box.getBoolean("Locked"); - if (!locked) { + + JSONObject localData = new JSONObject(FileStoreReader.readFile(BoxesActivity.this, "localUserData.json")); + + if (!locked && checkDateLimit(localData.getString("DateUntil"))) { Intent openPage = new Intent(BoxesActivity.this, ExperimentActivity.class); openPage.putExtra("JSON", box.toString()); startActivity(openPage); @@ -156,4 +165,56 @@ public class BoxesActivity extends AppCompatActivity { e.printStackTrace(); } } + + @RequiresApi(api = Build.VERSION_CODES.N) + private boolean checkDateLimit(String dateLimit){ + + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); + String dateToday = simpleDateFormat.format(calendar.getTime()); + d("dateToday", dateToday); + + Integer dateTodayYear = 1000*Character.getNumericValue(dateToday.codePointAt(0))+100*Character.getNumericValue(dateToday.codePointAt(1))+10*Character.getNumericValue(dateToday.codePointAt(2))+Character.getNumericValue(dateToday.codePointAt(3)); + + String dateLimitFormatted = dateLimit.substring(dateLimit.length()-4); + d("dateDeadline", dateLimitFormatted); + + Integer dateLimitYear = 1000*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+100*Character.getNumericValue(dateLimitFormatted.codePointAt(1))+10*Character.getNumericValue(dateLimitFormatted.codePointAt(2))+Character.getNumericValue(dateLimitFormatted.codePointAt(3)); + + if(dateTodayYear >= dateLimitYear){ + simpleDateFormat = new SimpleDateFormat("mm"); + dateToday = simpleDateFormat.format(calendar.getTime()); + + d("dateToday", dateToday); + + Integer dateTodayMonth = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1)); + + dateLimitFormatted = dateLimit.substring(dateLimit.length()-7, dateLimit.length()-5); + d("dateDeadline", dateLimitFormatted); + + Integer dateLimitMonth = 10*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+Character.getNumericValue(dateLimitFormatted.codePointAt(1)); + + if(dateTodayMonth >= dateLimitMonth){ + simpleDateFormat = new SimpleDateFormat("dd"); + dateToday = simpleDateFormat.format(calendar.getTime()); + + d("dateToday", dateToday); + + Integer dateTodayDay = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1)); + + dateLimitFormatted = dateLimit.substring(dateLimit.length()-10, dateLimit.length()-8); + d("dateDeadline", dateLimitFormatted); + + Integer dateLimitDay = 10*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+Character.getNumericValue(dateLimitFormatted.codePointAt(1)); + + if(dateTodayDay >= dateLimitDay){ + d("dateTest", "Date today is later than locked date!"); + return true; + } + + } + + } + return false; + } } diff --git a/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java b/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java index c69585ee8a1730b498f676b74d0c4b823d12bbc2..daa4aa89209fbbf3c02a55de99864a94e25e451f 100644 --- a/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java +++ b/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java @@ -6,7 +6,6 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.icu.text.SimpleDateFormat; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -24,8 +23,8 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.InputStream; -import java.util.Calendar; import java.util.Random; import static android.util.Log.d; @@ -61,10 +60,8 @@ public class MainActivity extends AppCompatActivity { getSupportActionBar().setDisplayUseLogoEnabled(true); askForWriteAccess(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - testingDateAndTime(); - } createSalt(); + checkLocalUserFile(); homeButton = findViewById(R.id.HomeHomeButton); loginButton = findViewById(R.id.HomeLoginButton); @@ -116,6 +113,16 @@ public class MainActivity extends AppCompatActivity { } + private void checkLocalUserFile() { + File file = new File(this.getFilesDir(), "localUserData.json"); + if(!file.exists()) { + // Do stuff to initialise the file + FileStoreReader.saveFile(this, "localUserData.json", "{DateUntil:'31/01/1999'}"); + } else { + // Do nothing + } + } + private void createSalt(){ SharedPreferences savedSettings = this.getSharedPreferences("com.yearthreeproject.xbframework.PREFERENCE_FILE_KEY", Context.MODE_PRIVATE); SharedPreferences.Editor savedSettingsEditor = savedSettings.edit(); @@ -137,72 +144,6 @@ public class MainActivity extends AppCompatActivity { } } - @RequiresApi(api = Build.VERSION_CODES.N) - private void testingDateAndTime(){ - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy"); - String dateToday = simpleDateFormat.format(calendar.getTime()); - d("dateToday", dateToday); - - Integer dateTodayYear = 1000*Character.getNumericValue(dateToday.codePointAt(0))+100*Character.getNumericValue(dateToday.codePointAt(1))+10*Character.getNumericValue(dateToday.codePointAt(2))+Character.getNumericValue(dateToday.codePointAt(3)); - - calendar.add(Calendar.DATE, 5); - String dateLater = simpleDateFormat.format(calendar.getTime()); - d("dateDeadline", dateLater); - - Integer dateLaterYear = 1000*Character.getNumericValue(dateLater.codePointAt(0))+100*Character.getNumericValue(dateLater.codePointAt(1))+10*Character.getNumericValue(dateLater.codePointAt(2))+Character.getNumericValue(dateLater.codePointAt(3)); - - d("dateTest", dateTodayYear.toString()); - d("dateTest", dateLaterYear.toString()); - - if(dateTodayYear <= dateLaterYear){ - d("dateTest", "Release from experiment!"); - - simpleDateFormat = new SimpleDateFormat("mm"); - dateToday = simpleDateFormat.format(calendar.getTime()); - - d("dateToday", dateToday); - - Integer dateTodayMonth = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1)); - - calendar.add(Calendar.DATE, 5); - dateLater = simpleDateFormat.format(calendar.getTime()); - d("dateDeadline", dateLater); - - Integer dateLaterMonth = 10*Character.getNumericValue(dateLater.codePointAt(0))+Character.getNumericValue(dateLater.codePointAt(1)); - - d("dateTest", dateTodayMonth.toString()); - d("dateTest", dateLaterMonth.toString()); - - if(dateTodayMonth <= dateLaterMonth){ - d("dateTest", "Release from experiment!"); - - simpleDateFormat = new SimpleDateFormat("dd"); - dateToday = simpleDateFormat.format(calendar.getTime()); - - d("dateToday", dateToday); - - Integer dateTodayDay = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1)); - - calendar.add(Calendar.DATE, 5); - dateLater = simpleDateFormat.format(calendar.getTime()); - d("dateDeadline", dateLater); - - Integer dateLaterDay = 10*Character.getNumericValue(dateLater.codePointAt(0))+Character.getNumericValue(dateLater.codePointAt(1)); - - d("dateTest", dateTodayDay.toString()); - d("dateTest", dateLaterDay.toString()); - - if(dateTodayDay <= dateLaterDay){ - d("dateTest", "Release from experiment!"); - } - - } - - } - - } - private void resetBoxJSON() { // Load Box Json and initialise to internal storage InputStream inputStream = getResources().openRawResource(R.raw.box);