• Tidak ada hasil yang ditemukan

104

APPENDIX 4: Unbounded Rule-Based Expert System(URB-ES) coding SECTION A: URB-ES code flow

Declaring the variables required for a successful database and server connection define("server","localhost");

define("user", "root");

define("password","");

define("database", "sdm");

$conn = mysqli_connect(server, user, password, database);

if($conn){

//echo "connection success!";

}else{

//echo "connection fail";

}

?>

2. Registering a user

<?php

$data = array();

require 'index.php'; //adding the index.php for connection and quering the database tables

if ( !isset($_POST['fname']) OR !isset($_POST['email']) OR !isset($_POST['password']) ){

echo "Failure!";

} else{

$fullname = $_POST['fname'];

$email = $_POST['email'];

$password = $_POST['password'];

$s = "INSERT INTO tbl_user(user_fullname, user_email, user_password) VALUES('$fullname', '$email', '$password')";

105

$res = mysqli_query($conn, $s);

if( $res ){

echo "User registered!";

} else{

echo "User failed to register!";

} }

1. declaring the variables required for a successful database and server connection define("server","localhost");

define("user", "root");

define("password","");

define("database", "sdm");

$conn = mysqli_connect(server, user, password, database);

if($conn){

//echo "connection success!";

}else{

//echo "connection fail";

}

4. This is the code for registering a user

package assignment2.sdm;

import android.content.Intent;

import android.os.AsyncTask;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

106

import assignment2.sdm.CustomObjects.Constants;

import assignment2.sdm.CustomObjects.User;

public class RegisterActivity extends AppCompatActivity { private EditText etFullName, etEmail, etPassword;

private Button mButton;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

etFullName = (EditText) findViewById(R.id.etFNames);

etEmail = (EditText) findViewById(R.id.etEmail);

etPassword = (EditText) findViewById(R.id.etPassword);

mButton = (Button) findViewById(R.id.btnRegister);

register();

}

private void register(){

final String fullname = etFullName.getText().toString(), email = etEmail.getText().toString(), password = etPassword.getText().toString();

mButton.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

new Register(new User(fullname, email, password)).execute();

} });

}

class Register extends AsyncTask<Void,Void,Boolean>{

private User user;

public Register(User user) { super();

this.user = user;

}

@Override

protected void onPreExecute() { super.onPreExecute();

}

@Override

protected Boolean doInBackground(Void... voids) { URL url;

HttpURLConnection connection;

try{

url = new URL(Constants.reg_url);

connection = (HttpURLConnection) url.openConnection();

connection.setConnectTimeout(10*1000);

connection.setRequestMethod("POST");

connection.setDoInput(true);

connection.setDoOutput(true);

StringBuilder builder = new StringBuilder();

String line;

String data = "";

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());

data = URLEncoder.encode("fullname", "UTF-

107

8")+"="+URLEncoder.encode(user.fname,"UTF-8")+"&"+

URLEncoder.encode("email", "UTF- 8")+"="+URLEncoder.encode(user.email,"UTF-8")+"&"+

URLEncoder.encode("password", "UTF- 8")+"="+URLEncoder.encode(user.password,"UTF-8");

writer.write(data);

}catch (Exception e){

Log.e("ASYNC", e.getMessage());

}

return null;

}

@Override

protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean);

startActivity(new Intent(RegisterActivity.this, MainActivity.class));

finish();

} } }

5. Code for Main Activity that provides the ability to choose

package assignment2.sdm;

import android.content.Intent;

import android.os.AsyncTask;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import assignment2.sdm.CustomObjects.Constants;

import assignment2.sdm.CustomObjects.User;

public class RegisterActivity extends AppCompatActivity { private EditText etFullName, etEmail, etPassword;

private Button mButton;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_register);

etFullName = (EditText) findViewById(R.id.etFNames);

etEmail = (EditText) findViewById(R.id.etEmail);

etPassword = (EditText) findViewById(R.id.etPassword);

mButton = (Button) findViewById(R.id.btnRegister);

register();

}

private void register(){

108

final String fullname = etFullName.getText().toString(), email = etEmail.getText().toString(), password = etPassword.getText().toString();

mButton.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

new Register(new User(fullname, email, password)).execute();

} });

}

class Register extends AsyncTask<Void,Void,Boolean>{

private User user;

public Register(User user) { super();

this.user = user;

}

@Override

protected void onPreExecute() { super.onPreExecute();

}

@Override

protected Boolean doInBackground(Void... voids) { URL url;

HttpURLConnection connection;

try{

url = new URL(Constants.reg_url);

connection = (HttpURLConnection) url.openConnection();

connection.setConnectTimeout(10*1000);

connection.setRequestMethod("POST");

connection.setDoInput(true);

connection.setDoOutput(true);

StringBuilder builder = new StringBuilder();

String line;

String data = "";

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());

data = URLEncoder.encode("fullname", "UTF- 8")+"="+URLEncoder.encode(user.fname,"UTF-8")+"&"+

URLEncoder.encode("email", "UTF- 8")+"="+URLEncoder.encode(user.email,"UTF-8")+"&"+

URLEncoder.encode("password", "UTF- 8")+"="+URLEncoder.encode(user.password,"UTF-8");

writer.write(data);

}catch (Exception e){

Log.e("ASYNC", e.getMessage());

}

return null;

}

@Override

protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean);

startActivity(new Intent(RegisterActivity.this, MainActivity.class));

finish();

} }

109

}

6. Consulting Activity Code

package assignment2.sdm;

import android.content.Intent;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.view.View;

import com.google.gson.Gson;

import assignment2.sdm.Adapters.CriteriaAdapter;

import assignment2.sdm.CustomObjects.CriteriaList;

import assignment2.sdm.CustomObjects.Utilities;

public class ConsultActivity extends AppCompatActivity { public CriteriaList list;

public CriteriaList mList;

public RecyclerView rvList;

private FloatingActionButton fabCommit;

//this adapter will contain the criteria array of all critic public CriteriaAdapter adapter;

Gson gson; //manipulates data from JSON to GSon and to any kind of object preferred

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_consult);

list = Utilities.fillList();

mList = new CriteriaList();

rvList = (RecyclerView) findViewById(R.id.rv_items);

fabCommit = (FloatingActionButton) findViewById(R.id.fabCommit);

rvList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

adapter = new CriteriaAdapter(this, list);

rvList.setAdapter( adapter );

fabCommit.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) { gson = new Gson();

String list_to_json = gson.toJson(mList);

Intent intent = new Intent(ConsultActivity.this, WeightActivity.class);

intent.putExtra("list", list_to_json);

startActivity(intent);

} });

} }

7. Weighing Activity

package assignment2.sdm;

import android.content.Intent;

110

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutCompat;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.util.Log;

import android.view.View;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

import assignment2.sdm.Adapters.WeightAdapter;

import assignment2.sdm.CustomObjects.Criteria;

import assignment2.sdm.CustomObjects.CriteriaList;

import assignment2.sdm.CustomObjects.ResultsModelsActivity;

import assignment2.sdm.CustomObjects.Weight;

import assignment2.sdm.CustomObjects.Weights;

public class WeightActivity extends AppCompatActivity implements View.OnClickListener{

private CriteriaList list;

private Gson gson;

private String EXTRA_KEY_NAME = "list";

private String json;

private RecyclerView rvWeights;

private FloatingActionButton fabContinue;

private LinearLayoutManager manager;

private WeightAdapter adapter;

private Weights weights;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_weight);

rvWeights = (RecyclerView) findViewById(R.id.rvWeights);

fabContinue = (FloatingActionButton) findViewById(R.id.fabContinue);

manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);

rvWeights.setLayoutManager(manager);

try{

json = getIntent().getStringExtra(EXTRA_KEY_NAME);

gson = new Gson();

Type typeCriteriaList = new TypeToken<CriteriaList>(){}.getType();

list = gson.fromJson(json, typeCriteriaList);

if (list == null && list.size() < 0){

Log.e("List", "Nothing is selected!");

}else{

Log.e("List", "Existing, with "+list.size()+" length!");

adapter = new WeightAdapter(this, extractWeights());

rvWeights.setAdapter(adapter);

}

fabContinue.setOnClickListener(this);

}catch (Exception e){

Log.e("Error", e.getMessage());

} }

@Override

public void onClick(View view) {