Skip to content
Snippets Groups Projects
Commit 138f90f5 authored by Christian Dresen's avatar Christian Dresen
Browse files

no message

parent cd6e12cf
No related branches found
No related tags found
No related merge requests found
Showing
with 271 additions and 125 deletions
......@@ -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>
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;
}
}
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();
}
}
}
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
......@@ -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);
}
}
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
......@@ -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>
......
......@@ -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$" />
......
......@@ -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">
......
<?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
......@@ -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
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'
}
File deleted
......@@ -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"
......
......@@ -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) {
......
......@@ -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);
}
}
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());
}
}
}
......@@ -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")
......
......@@ -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();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment