diff --git a/WarpDrinkApi/pom.xml b/WarpDrinkApi/pom.xml index 1fbc9400b3a11fecfbd8f849b421625828b674c8..fa9c9f23e4283e9e9843acb45c2f7885015a2b4e 100644 --- a/WarpDrinkApi/pom.xml +++ b/WarpDrinkApi/pom.xml @@ -40,8 +40,34 @@ <artifactId>cxf-rt-rs-security-oauth2</artifactId> <version>2.7.5</version> </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>1.7.1</version> + </dependency> + <dependency> + <groupId>com.j256.ormlite</groupId> + <artifactId>ormlite-jdbc</artifactId> + <version>4.48</version> + </dependency> + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>5.1.35</version> + </dependency> + + </dependencies> <build> <finalName>warpdrink</finalName> + <plugins> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.7</source> + <target>1.7</target> + </configuration> + </plugin> + </plugins> </build> </project> diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java new file mode 100644 index 0000000000000000000000000000000000000000..a0f96c74aa7ea9d794f77ed6ce0d60f56d667f8a --- /dev/null +++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Database.java @@ -0,0 +1,37 @@ +package ms.itsecteam.warpdrink; + +import java.sql.SQLException; + +import com.j256.ormlite.jdbc.JdbcConnectionSource; +import com.j256.ormlite.support.ConnectionSource; + +public class Database { + private static Database instance; + private ConnectionSource connectionSource; + + private Database() { + try { + this.connectionSource = new JdbcConnectionSource("jdbc:mysql://localhost/dev","root",""); + System.out.println(this.connectionSource); + System.out.println(this.connectionSource.isOpen()); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static Database getInstance() { + if (instance == null) { + instance = new Database(); + } + return instance; + } + + + public ConnectionSource getConnectionSource() { + return connectionSource; + } + + public void setConnectionSource(ConnectionSource connectionSource) { + this.connectionSource = connectionSource; + } +} diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java new file mode 100644 index 0000000000000000000000000000000000000000..dfda6b2e7a7ee021a5d3a75356ed13ea71e805c5 --- /dev/null +++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/Servlet.java @@ -0,0 +1,25 @@ +package ms.itsecteam.warpdrink; + +import java.sql.SQLException; + +import ms.itsecteam.warpdrink.objects.User; + +public class Servlet extends com.sun.jersey.spi.container.servlet.ServletContainer{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + public Servlet() { + super(); + Database.getInstance(); + try { + UserDao.getInstance().saveUser(new User("Hans",3.0)); + } catch (SQLException e) { + e.printStackTrace(); + } + } + +} diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java new file mode 100644 index 0000000000000000000000000000000000000000..3153563237fffa24bc3bd58c6dee2d06b487a7d1 --- /dev/null +++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/UserDao.java @@ -0,0 +1,55 @@ +package ms.itsecteam.warpdrink; + +import java.sql.SQLException; +import java.util.List; + +import ms.itsecteam.warpdrink.objects.User; + +import com.j256.ormlite.dao.BaseDaoImpl; +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.dao.DaoManager; +import com.j256.ormlite.support.ConnectionSource; +import com.j256.ormlite.table.TableUtils; + +public class UserDao extends BaseDaoImpl<User, String>{ + + private static UserDao instance; + private ConnectionSource connectionSource; + private Dao<User, String> userDao; + + private UserDao() throws SQLException { + super(User.class); + this.connectionSource = Database.getInstance().getConnectionSource(); + TableUtils.createTableIfNotExists(this.connectionSource, User.class); + this.userDao = DaoManager.createDao(this.connectionSource, User.class); + } + + public static UserDao getInstance() throws SQLException { + if (instance == null) { + instance = new UserDao(); + } + return instance; + } + public void saveUser(User user) throws SQLException { + this.userDao.createOrUpdate(user); + } + public List<User> getAllUsers() throws SQLException { + return this.userDao.queryForAll(); + } + public User getUser(int userid) throws SQLException { + List<User> result = this.userDao.queryForEq("userid", userid); + if (!result.isEmpty()) + return result.get(0); + return null; + } + public User getUser(String name) throws SQLException { + List<User> result = this.userDao.queryForEq("name", name); + if (!result.isEmpty()) + return result.get(0); + return null; + } + + + + +} \ No newline at end of file diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java index 1efbff197808292460842f88d542e8cab60e29bc..d71008edf5a22ee94e6ac850461a790a04fdc7d6 100644 --- a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java +++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/objects/User.java @@ -2,21 +2,28 @@ package ms.itsecteam.warpdrink.objects; import javax.xml.bind.annotation.XmlRootElement; -@SuppressWarnings("restriction") +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + @XmlRootElement +@DatabaseTable(tableName = "users") public class User { - + + @DatabaseField(generatedId = true) private int userid; + + @DatabaseField(columnName = "name",unique = true, canBeNull = false) private String name; + + @DatabaseField(columnName = "credit") private double credit; public User() { super(); } - public User(int userid, String name, double credit) { + public User(String name, double credit) { super(); - this.userid = userid; this.name = name; this.credit = credit; } @@ -48,4 +55,12 @@ public class User { public String toString() { return "[Name: "+this.name+", Credit:"+this.credit+"]"; } + + @Override + public boolean equals(Object other) { + if (other == null || other.getClass() != getClass()) { + return false; + } + return name.equals(((User) other).name); + } } diff --git a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java index 841f45fbf7ffd3ea350047f29c9496b6d27fb80d..c04259f3ff26fb520aa6e3a422d1f3938f87baa8 100644 --- a/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java +++ b/WarpDrinkApi/src/main/java/ms/itsecteam/warpdrink/provider/UserProvider.java @@ -1,29 +1,73 @@ package ms.itsecteam.warpdrink.provider; -import java.util.ArrayList; +import java.sql.SQLException; import java.util.List; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import com.google.gson.Gson; + +import ms.itsecteam.warpdrink.UserDao; import ms.itsecteam.warpdrink.objects.User; @Path("user") public class UserProvider { + List<User> users; + + public UserProvider() { + try { + users = UserDao.getInstance().getAllUsers(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + @GET @Path("/all") @Produces(MediaType.APPLICATION_JSON) - public List<User> getUsers() { - List<User> users = new ArrayList<User>(); - users.add(new User(1,"Hugo",1.0)); - users.add(new User(2,"Frank",0.5)); - users.add(new User(3,"Martin",0.5)); - return users; + public String getUsers() { + List<User> users; + try { + users = UserDao.getInstance().getAllUsers(); + if(users != null){ + return new Gson().toJson(users,users.getClass()); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return ""; } + @GET @Path("/{userid}") @Produces(MediaType.APPLICATION_JSON) public User getUser(@PathParam("userid") int userid) { - return new User(userid,"Hugo",1.0); + try { + return UserDao.getInstance().getUser(userid); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + @POST + @Path("/{userid}") + @Produces(MediaType.APPLICATION_JSON) + public void setUser(@PathParam("userid") int userid, @FormParam("credit") double credit) throws SQLException { + User user = UserDao.getInstance().getUser(userid); + user.setCredit(credit); + UserDao.getInstance().saveUser(user); + } + @PUT + @Path("/create") + @Produces(MediaType.APPLICATION_JSON) + public User createUser(@FormParam("name") String name) throws SQLException { + if(UserDao.getInstance().getUser(name) == null){ + User user = new User(name,0.0); + UserDao.getInstance().saveUser(user); + return user; + } + return null; } } \ No newline at end of file diff --git a/WarpDrinkApi/src/main/webapp/WEB-INF/web.out.xml b/WarpDrinkApi/src/main/webapp/WEB-INF/web.out.xml deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml b/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml index bf12269c8afbb340c1c8a43270b8252f2c0fec97..8f6bce9c95f147228f51106f850405e2921d0a3f 100644 --- a/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml +++ b/WarpDrinkApi/src/main/webapp/WEB-INF/web.xml @@ -5,7 +5,7 @@ <web-app> <servlet> <servlet-name>REST Service</servlet-name> - <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> + <servlet-class>ms.itsecteam.warpdrink.Servlet</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>ms.itsecteam.warpdrink.provider</param-value> diff --git a/WarpDrinkApp/.idea/gradle.xml b/WarpDrinkApp/.idea/gradle.xml index 3068cd46130b45ab8c104d36ca53362763d3744f..3ec595561ecd27655f5f272d50e9a438d7dccb62 100644 --- a/WarpDrinkApp/.idea/gradle.xml +++ b/WarpDrinkApp/.idea/gradle.xml @@ -5,8 +5,8 @@ <GradleProjectSettings> <option name="distributionType" value="LOCAL" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.2.1" /> - <option name="gradleJvm" value="1.8" /> + <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.2.1" /> + <option name="gradleJvm" value="1.7" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> diff --git a/WarpDrinkApp/.idea/misc.xml b/WarpDrinkApp/.idea/misc.xml index e284b1d433234d5d0047f8cff997cafe74fb0312..f6607a52de32e22ad8d42fadbe325aa1851b208d 100644 --- a/WarpDrinkApp/.idea/misc.xml +++ b/WarpDrinkApp/.idea/misc.xml @@ -13,7 +13,7 @@ <ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Remove" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/WarpDrinkApp/.idea/vcs.xml b/WarpDrinkApp/.idea/vcs.xml index 6c0b8635858dc7ad44b93df54b762707ce49eefc..6564d52db279c4ae8d882aacf5aa89a85e7a04de 100644 --- a/WarpDrinkApp/.idea/vcs.xml +++ b/WarpDrinkApp/.idea/vcs.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> + <mapping directory="" vcs="" /> </component> </project> \ No newline at end of file diff --git a/WarpDrinkApp/app/app.iml b/WarpDrinkApp/app/app.iml index fbe226fa96e6d5a622940a930abd45b518e8fb56..89bc1db1ddbfd80533e40dcdccf31c7aee452b8e 100644 --- a/WarpDrinkApp/app/app.iml +++ b/WarpDrinkApp/app/app.iml @@ -86,19 +86,20 @@ <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> </content> - <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" /> + <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" /> <orderEntry type="sourceFolder" forTests="false" /> - <orderEntry type="library" exported="" name="codepath-oauth-0.4.1" level="project" /> <orderEntry type="library" exported="" name="scribe-codepath-0.0.3" level="project" /> <orderEntry type="library" exported="" name="activeandroid-3.0" level="project" /> - <orderEntry type="library" exported="" name="codepath-utils" level="project" /> - <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" /> <orderEntry type="library" exported="" name="jackson-core-2.0.1" level="project" /> - <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" /> <orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" /> <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" /> <orderEntry type="library" exported="" name="spring-android-rest-template-1.0.1.RELEASE" level="project" /> - <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" /> <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" /> + <orderEntry type="library" exported="" name="gson-1.7.2" level="project" /> + <orderEntry type="library" exported="" name="codepath-utils" level="project" /> + <orderEntry type="library" exported="" name="jackson-databind-2.0.1" level="project" /> + <orderEntry type="library" exported="" name="httpclient-android-4.3.5.1" level="project" /> + <orderEntry type="library" exported="" name="jackson-annotations-2.0.1" level="project" /> + <orderEntry type="library" exported="" name="spring-android-core-1.0.1.RELEASE" level="project" /> </component> </module> \ No newline at end of file diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle index 01399bd06f3d4e647b78f41795910b12062029d2..e2b6e480d2716d4b1bdb9c3b3fa3fca4c8b4d78b 100644 --- a/WarpDrinkApp/app/build.gradle +++ b/WarpDrinkApp/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 22 - buildToolsVersion "23.0.0 rc2" + compileSdkVersion 21 + buildToolsVersion '23.0.0 rc2' defaultConfig { applicationId "ms.itsecteam.warpdrink" @@ -28,8 +28,11 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.fasterxml.jackson.core:jackson-databind:2.0.1' compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE' + compile 'com.google.code.gson:gson:1.7.2' + compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' + } diff --git a/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar b/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar deleted file mode 100644 index 9b92c0a1451d8b4c3d4d7395f9020a1187218fa5..0000000000000000000000000000000000000000 Binary files a/WarpDrinkApp/app/libs/codepath-oauth-0.4.1.jar and /dev/null differ diff --git a/WarpDrinkApp/app/src/main/AndroidManifest.xml b/WarpDrinkApp/app/src/main/AndroidManifest.xml index 93792b685de7c421a58f6e8d6fe95a979522be2f..4e628c489d480c19bb97cd1851a6c3af686fae61 100644 --- a/WarpDrinkApp/app/src/main/AndroidManifest.xml +++ b/WarpDrinkApp/app/src/main/AndroidManifest.xml @@ -14,7 +14,7 @@ <meta-data android:name="AA_DB_VERSION" android:value="5" /> <meta-data android:name="AA_MODELS" - android:value="ms.itsecteam.warpdrink.data.User" /> + android:value="ms.itsecteam.warpdrink.data.objects.User" /> <activity android:name=".MainActivity" android:label="@string/app_name" diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java index 118683b97148ce34a08bdc48900bf58d5ae61d2f..d831c3efa6f2e61d75d94654eb139c545754f04f 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/MainActivity.java @@ -2,8 +2,10 @@ package ms.itsecteam.warpdrink; import android.app.AlertDialog; import android.content.DialogInterface; +import android.provider.ContactsContract; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; @@ -19,11 +21,12 @@ import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.ListIterator; import ms.itsecteam.warpdrink.data.DataApi; -import ms.itsecteam.warpdrink.data.RestClient; +import ms.itsecteam.warpdrink.data.rest.RestClient; import ms.itsecteam.warpdrink.data.objects.User; import ms.itsecteam.warpdrink.dialogs.ChargeDialog; import ms.itsecteam.warpdrink.dialogs.NewUserDialog; @@ -51,12 +54,6 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - User.deleteAll(); - new User(2, "hans", 100.0).save(); - new User(3, "meier", 10.0).save(); - new User(3, "merten", 1.0).save(); - new User(4, "dieter", 1.0).save(); - new User(5, "detlef", 0.5).save(); getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); setContentView(R.layout.activity_main); @@ -76,8 +73,9 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe this.lstOrdered = (ListView) findViewById(R.id.lstOrdered); this.lstOrdered.setAdapter(this.lstAdapter); + this.users = User.getAll(); - this.atxvAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, users); + this.atxvAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, this.users); this.atxvName = (AutoCompleteTextView) findViewById(R.id.atxvName); this.atxvName.setAdapter(atxvAdapter); @@ -88,8 +86,9 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe this.btnLogout.setVisibility(View.INVISIBLE); this.enableControls(false); - RestClient restClient = RestClient.getInstance(); - restClient.getUser(); + + DataApi.getInstance().refreshUserData(); + } private void setCurrentUser(User user) { @@ -195,7 +194,8 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe new NewUserDialog(this).show(); break; case R.id.btnRefresh: - Toast.makeText(this,"refresh" ,Toast.LENGTH_LONG).show(); + DataApi.getInstance().refreshUserData(); + Toast.makeText(this,"Refresh successful" ,Toast.LENGTH_LONG).show(); break; } } @@ -204,11 +204,10 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction()==KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { if(this.atxvAdapter.getCount() == 1) { - setCurrentUser((User) this.atxvAdapter.getItem(0)); + setCurrentUser(DataApi.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(0)).getUserid())); this.atxvName.setText(this.atxvAdapter.getItem(0).toString()); + this.atxvName.dismissDropDown(); } - - setCurrentUser(User.getByName(this.atxvName.getText().toString())); return true; } return false; @@ -216,13 +215,14 @@ public class MainActivity extends ActionBarActivity implements View.OnClickListe @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - setCurrentUser((User) this.atxvAdapter.getItem(position)); + setCurrentUser(DataApi.getInstance().remoteGetUser(((User) this.atxvAdapter.getItem(position)).getUserid())); } @Override public void onClick(DialogInterface dialog, int which) { - this.currentUser.setCredit(this.currentUser.getCredit()-this.getTotal()); + this.currentUser.setCredit(this.currentUser.getCredit() - this.getTotal()); this.currentUser.save(); + RestClient.getInstance().saveUserCredit(this.currentUser); this.clearCurrentUser(); } public boolean onOptionsItemSelected(MenuItem item) { diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java index 22a909e9475c1f16540402df6b3fd91aaf9396e0..d5ca1bc7cb6c5259695c498b0d2ff9e0ad18ea28 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/DataApi.java @@ -2,9 +2,12 @@ package ms.itsecteam.warpdrink.data; import android.util.Log; import java.util.Arrays; +import java.util.List; +import java.util.ListIterator; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.rest.RestClient; public class DataApi { @@ -31,24 +34,29 @@ public class DataApi { if(User.getByName(name) == null) { User u = new User(); u.setName(name); - u.save(); - remoteSaveNewUser(u); - localRefreshUserData(); + RestClient.getInstance().createUser(u); + //u.save(); + refreshUserData(); return true; } return false; } - public void localRefreshUserData() { - Log.d("App", Arrays.toString(User.getAll().toArray())); + public void refreshUserData() { + List<User> u = RestClient.getInstance().getAllUser(); + if(u == null) + return; + User.deleteAll(); + ListIterator<User> ui = u.listIterator(); + while(ui.hasNext()) { + ui.next().save(); + } + Log.d("App", Arrays.toString(u.toArray())); mainActivity.refreshUsers(); } - private boolean remoteSaveNewUser(User u) { - return true; - } public User remoteGetUser(int userid) { - return new User(); + return RestClient.getInstance().getUser(userid); } } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java deleted file mode 100644 index bce08f6ee3fca4cd552ccac183311ede64a2aaed..0000000000000000000000000000000000000000 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/RestClient.java +++ /dev/null @@ -1,70 +0,0 @@ -package ms.itsecteam.warpdrink.data; - -import android.os.AsyncTask; -import android.util.Log; - -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.web.client.RestTemplate; - -import ms.itsecteam.warpdrink.MainActivity; -import ms.itsecteam.warpdrink.data.objects.User; - -public class RestClient { - - private static RestClient instance; - private MainActivity mainActivity; - private RestClient() {} - - public static RestClient getInstance () { - if (RestClient.instance == null) { - RestClient.instance = new RestClient(); - } - return RestClient.instance; - } - - public MainActivity getMainActivity() { - return mainActivity; - } - - public void setMainActivity(MainActivity mainActivity) { - this.mainActivity = mainActivity; - } - - public void getUser() { - new HttpRequestTask<User>().initTask("user/4",User.class).execute(); - } - - private class HttpRequestTask<T> extends AsyncTask<Object, Void, T> { - String url; - Class<T> clazz; - public HttpRequestTask initTask(String url, Class<T> clazz) { - this.url = "http://10.0.2.2:8080/warpdrink/rest/"; - - this.url += url; - this.clazz=clazz; - return this; - } - @Override - protected T doInBackground(Object... params) { - try { - RestTemplate restTemplate = new RestTemplate(); - restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); - T ret = restTemplate.getForObject(this.url, clazz); - - return ret; - } catch (Exception e) { - Log.e("MainActivity", e.getMessage(), e); - } - - return null; - } - - @Override - protected void onPostExecute(T result) { - Log.e("MainActivity", ((User) result).getName()); - } - - } - -} - diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java index 2ae4ad1b5305bd023b514d365c87d02865817d44..46efb14fb386a794f268bbde1da03126514ebfa5 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/Setting.java @@ -8,7 +8,7 @@ import com.activeandroid.query.Select; import java.util.List; -@Table(name = "Users") +@Table(name = "Settings") public class Setting extends Model { @Column(name = "key") diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java index ed159e1b4795de60b2118d80198d55814e627801..764f3814cf3dfa85a06758909e788282086f50fb 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/objects/User.java @@ -13,11 +13,13 @@ public class User extends Model { @Column(name = "userid") private int userid; - @Column(name = "name") - private String name; + @Column(name = "credit") private double credit; + @Column(name = "name") + private String name; + public User() { super(); } diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java new file mode 100644 index 0000000000000000000000000000000000000000..565853cf8990479a18cecc68026efdd0ac34f81c --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestSingleObject.java @@ -0,0 +1,37 @@ +package ms.itsecteam.warpdrink.data.rest; + +import android.os.AsyncTask; +import android.util.Log; + +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +public class RequestSingleObject<T> extends AsyncTask<Object, Void, T> { + String url; + Class<T> clazz; + public RequestSingleObject initTask(String url, Class<T> clazz) { + this.url = "http://10.0.2.2:8080/warpdrink/rest/"; + + this.url += url; + this.clazz=clazz; + return this; + } + @Override + protected T doInBackground(Object... params) { + try { + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); + T ret = restTemplate.getForObject(this.url, clazz); + + return ret; + } catch (Exception e) { + Log.e("MainActivity", e.getMessage(), e); + } + + return null; + } + + @Override + protected void onPostExecute(T result) { } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java new file mode 100644 index 0000000000000000000000000000000000000000..4338dfecdae5efe9f3d16eda1ebcb56d11b7f37c --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RequestUserList.java @@ -0,0 +1,50 @@ +package ms.itsecteam.warpdrink.data.rest; + +import android.os.AsyncTask; +import android.util.Log; + +import com.google.gson.Gson; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Arrays; +import java.util.List; + +import ms.itsecteam.warpdrink.data.objects.User; + +public class RequestUserList extends AsyncTask<Object, Void, List<User>> { + String url; + public RequestUserList initTask(String url) { + this.url = "http://10.0.2.2:8080/warpdrink/rest/"; + this.url += url; + return this; + } + @Override + protected List<User> doInBackground(Object... params) { + User[] x; + try { + String line; + String response=""; + OutputStreamWriter writer; + BufferedReader reader; + HttpURLConnection conn; + try { + conn = (HttpURLConnection) new URL(this.url).openConnection(); + conn.setDoOutput(true); + reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); + while ((line = reader.readLine()) != null) { response += line; } + Log.d("TV",response); + x = new Gson().fromJson(response, User[].class); + reader.close(); + return Arrays.asList(x); + } catch (Exception e) { Log.d("TV",e.toString()); } + } catch (Exception e) { + Log.e("MainActivity", e.getMessage(), e); + } + return null; + } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java new file mode 100644 index 0000000000000000000000000000000000000000..ed89a3f69d03176cebeaf8564ad4977c2562f339 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/RestClient.java @@ -0,0 +1,76 @@ +package ms.itsecteam.warpdrink.data.rest; + +import android.util.Log; + +import com.google.gson.Gson; + +import org.apache.http.NameValuePair; +import org.apache.http.message.BasicNameValuePair; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import ms.itsecteam.warpdrink.MainActivity; +import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.rest.http.HttpGetRequest; +import ms.itsecteam.warpdrink.data.rest.http.HttpPostRequest; +import ms.itsecteam.warpdrink.data.rest.http.HttpPutRequest; + +public class RestClient { + + private static RestClient instance; + private MainActivity mainActivity; + private RestClient() {} + + public static RestClient getInstance () { + if (RestClient.instance == null) { + RestClient.instance = new RestClient(); + } + return RestClient.instance; + } + + public User getUser(int userid) { + try { + User u = (User) new RequestSingleObject<User>().initTask("user/"+userid,User.class).execute().get(); + Log.d("TV",u.getName()); + return u; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + public List<User> getAllUser() { + try { + String response = new HttpGetRequest().initTask("user/all").execute().get(); + return Arrays.asList(new Gson().fromJson(response, User[].class)); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + public void saveUserCredit(User u) { + List<NameValuePair> postParams = new ArrayList<NameValuePair>(2); + postParams.add(new BasicNameValuePair("credit", String.valueOf(u.getCredit()))); + new HttpPostRequest().initTask("/user/"+u.getUserid(),postParams).execute(); + } + public boolean createUser(User u) { + List<NameValuePair> postParams = new ArrayList<NameValuePair>(2); + postParams.add(new BasicNameValuePair("name", u.getName())); + try { + String response = new HttpPutRequest().initTask("/user/create",postParams).execute().get(); + if(response != "") { + u = new Gson().fromJson(response, User.class); + if(u.getUserid() != 0) { + u.save(); + return true; + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } +} + diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..a5ab9ba99d38c253229c22b8f1a1a1844e56f899 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpGetRequest.java @@ -0,0 +1,42 @@ +package ms.itsecteam.warpdrink.data.rest.http; + +import android.os.AsyncTask; +import android.util.Log; + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class HttpGetRequest extends AsyncTask<Void, Void, String> { + String url; + public HttpGetRequest initTask(String url) { + this.url = "http://10.0.2.2:8080/warpdrink/rest/"; + this.url += url; + return this; + } + @Override + protected String doInBackground(Void... params) { + try { + HttpClient client = new DefaultHttpClient(); + HttpGet request = new HttpGet(this.url); + + HttpResponse response = client.execute(request); + BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); + + String line = ""; + String responsestr=""; + while ((line = rd.readLine()) != null) { + responsestr += line; + } + return responsestr; + } catch (Exception e) { + Log.e("MainActivity", e.getMessage(), e); + } + return null; + } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..8150020a164a6410966e53390b3879e41ca7532a --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPostRequest.java @@ -0,0 +1,49 @@ +package ms.itsecteam.warpdrink.data.rest.http; + +import android.os.AsyncTask; +import android.util.Log; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.DefaultHttpClient; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.List; + +public class HttpPostRequest extends AsyncTask<Void, Void, String> { + String url; + List<NameValuePair> postParams; + public HttpPostRequest initTask(String url, List<NameValuePair> postParams) { + this.url = "http://10.0.2.2:8080/warpdrink/rest/"; + this.url += url; + this.postParams =postParams; + return this; + } + @Override + protected String doInBackground(Void... params) { + try { + HttpClient client = new DefaultHttpClient(); + HttpPost request = new HttpPost(this.url); + + request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8")); + + HttpResponse response = client.execute(request); + BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); + + String line = ""; + String responsestr=""; + while ((line = rd.readLine()) != null) { + responsestr += line; + } + return responsestr; + } catch (Exception e) { + Log.e("MainActivity", e.getMessage(), e); + } + return null; + } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..b0dcd7bba4ce96700434bb5b7cdf9deb8a40f574 --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/data/rest/http/HttpPutRequest.java @@ -0,0 +1,49 @@ +package ms.itsecteam.warpdrink.data.rest.http; + +import android.os.AsyncTask; +import android.util.Log; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.impl.client.DefaultHttpClient; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.List; + +public class HttpPutRequest extends AsyncTask<Void, Void, String> { + String url; + List<NameValuePair> postParams; + public HttpPutRequest initTask(String url, List<NameValuePair> postParams) { + this.url = "http://10.0.2.2:8080/warpdrink/rest/"; + this.url += url; + this.postParams =postParams; + return this; + } + @Override + protected String doInBackground(Void... params) { + try { + HttpClient client = new DefaultHttpClient(); + HttpPut request = new HttpPut(this.url); + + request.setEntity(new UrlEncodedFormEntity(this.postParams, "UTF-8")); + + HttpResponse response = client.execute(request); + BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); + + String line = ""; + String responsestr=""; + while ((line = rd.readLine()) != null) { + responsestr += line; + } + return responsestr; + } catch (Exception e) { + Log.e("MainActivity", e.getMessage(), e); + } + return null; + } + +} diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java index b4fcc7f807ffe27bb97d38a9143b55766593541d..08a3f4996920c2019214cbc0841b6fbaa6e7f30e 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeCustomDialog.java @@ -10,6 +10,7 @@ import android.widget.NumberPicker; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.rest.RestClient; public class ChargeCustomDialog extends Dialog implements View.OnClickListener { @@ -53,6 +54,7 @@ public class ChargeCustomDialog extends Dialog implements User u = this.c.getCurrentUser(); u.setCredit(u.getCredit()+amount); u.save(); + RestClient.getInstance().saveUserCredit(u); } this.c.refreshCreditTextView(); dismiss(); diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java index 589a6f5b772c2e6dd10fc2c1c35163a2f10877aa..54369352e5a279bff12ca95a9a3875a9a47e5a5c 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/ChargeDialog.java @@ -9,6 +9,7 @@ import android.widget.Button; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; import ms.itsecteam.warpdrink.data.objects.User; +import ms.itsecteam.warpdrink.data.rest.RestClient; public class ChargeDialog extends Dialog implements android.view.View.OnClickListener { @@ -62,6 +63,7 @@ public class ChargeDialog extends Dialog implements User u = this.c.getCurrentUser(); u.setCredit(u.getCredit()+amount); u.save(); + RestClient.getInstance().saveUserCredit(u); } this.c.refreshCreditTextView(); dismiss(); diff --git a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java index aaaf347e95ca10b859112ed79c9b998cdb6db950..6f0751d45b0eb6da68d0730bb71d78477e5be249 100644 --- a/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/itsecteam/warpdrink/dialogs/NewUserDialog.java @@ -11,6 +11,7 @@ import android.widget.Toast; import ms.itsecteam.warpdrink.MainActivity; import ms.itsecteam.warpdrink.R; import ms.itsecteam.warpdrink.data.DataApi; +import ms.itsecteam.warpdrink.data.rest.RestClient; public class NewUserDialog extends Dialog implements View.OnClickListener { diff --git a/WarpDrinkApp/build.gradle b/WarpDrinkApp/build.gradle index 9405f3fd18bcf39eb1a80a741cfd2ad0bc01d2b0..79381f11929dbbed7d73df61d078f18bb4848556 100644 --- a/WarpDrinkApp/build.gradle +++ b/WarpDrinkApp/build.gradle @@ -1,5 +1,4 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { repositories { jcenter() @@ -11,9 +10,11 @@ buildscript { // in the individual module build.gradle files } } - allprojects { repositories { jcenter() } } + +dependencies { +} \ No newline at end of file