Skip to content
This repository has been archived by the owner on Apr 3, 2024. It is now read-only.

Commit

Permalink
Dataming
Browse files Browse the repository at this point in the history
  • Loading branch information
matheusrufca committed Nov 25, 2014
1 parent 4b4af99 commit 746f32f
Show file tree
Hide file tree
Showing 7 changed files with 432 additions and 261 deletions.
3 changes: 3 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

446 changes: 281 additions & 165 deletions .idea/workspace.xml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
Expand Down
47 changes: 47 additions & 0 deletions app/src/main/java/com/example/matheus/transipoa/DataMining.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.example.matheus.transipoa;

import java.util.Arrays;
import java.util.List;
import java.util.HashMap;
import java.util.Map;

/**
* Created by Matheus on 24/11/2014.
*/
public class DataMining {
public static void removeUselessTweets(List<TwitterStatusViewModel> tweets) {
DataMining dm = new DataMining();
Map<String, List<String>> filtros = dm.filtros;
int aux = 0;

for (int i = 0; i < tweets.size(); i++) {
TwitterStatusViewModel t = tweets.get(i);
String author = t.author.toUpperCase();

/* verifica se possui filtros para o author */
if(!filtros.containsKey(author))
break;

/* exclui o tweet se tiver alguma palavra filtrada */
if(!containWordFromList(t.status, filtros.get(author)))
tweets.remove(i);
}
}


private static boolean containWordFromList(String input, List<String> words) {
for(String w : words)
{
if(input.toLowerCase().contains(w.toLowerCase()))
return true;
}
return false;
}



private Map<String, List<String>> filtros = new HashMap<String, List<String>>() {{
put("EPTC_POA", Arrays.asList("acidente", "samu", "engarrafamento", "atencão", "bloque", "colisão", "lento", "evit"));
}};

}

This file was deleted.

84 changes: 42 additions & 42 deletions app/src/main/java/com/example/matheus/transipoa/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ public class MainActivity extends Activity implements OnTaskCompleted {
private StatusAdapter listAdapter;
private TwitterService twitterService;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onStart() {
Expand All @@ -32,27 +33,27 @@ protected void onStart() {
refreshListAsync();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
}


public void onClickBtn(View v) {
Expand All @@ -66,27 +67,26 @@ public void onClickBtn(View v) {
}


private void refreshListAsync(){
this.twitterService = TwitterService.twitterServiceFactory(this);
List<TwitterStatusViewModel> tweets = new ArrayList<TwitterStatusViewModel>();
private void refreshListAsync() {
List<String> usernames = Arrays.asList("radarblitzpoa", "EPTC_POA", "transitozh");

try {
List<String> usernames = Arrays.asList("EPTC_POA","transitozh");
for (String username : usernames) {
try {
this.twitterService = TwitterService.twitterServiceFactory(this);
List<TwitterStatusViewModel> tweets = new ArrayList<TwitterStatusViewModel>();

/* executa tarefa async */
this.twitterService.execute(usernames);

/* obtém resultado da tarefa */
//tweets = twitterService.get();

/* põe os tweets na view */
//setListFromSource(tweets);
} catch (Exception e) {
showToast("Ocorreu um erro, tente novamente");
/* executa tarefa async */
this.twitterService.execute(username);
} catch (Exception e) {
showToast("Ocorreu ao obter tweets de @" + username);
}
}
}

private void cleanList(){
private void cleanList() {
/* limpa a lista de resultados */
TwitterService.clearResultList();

/* limpa a lista do adapter */
this.listAdapter.clear();

Expand All @@ -97,7 +97,7 @@ private void cleanList(){
//setListFromSource(new ArrayList<TwitterStatusViewModel>());
}

private void showToast(String message){
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}

Expand All @@ -108,7 +108,7 @@ private void setListFromSource(List<TwitterStatusViewModel> tweets) {
}

public void onTaskCompleted() {
List<TwitterStatusViewModel> tweets = this.twitterService.getTweetsResult();
List<TwitterStatusViewModel> tweets = TwitterService.getTweetsResult();
setListFromSource(tweets);
}
}
100 changes: 58 additions & 42 deletions app/src/main/java/com/example/matheus/transipoa/TwitterService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import twitter4j.ResponseList;
Expand All @@ -19,7 +20,7 @@
/**
* Created by Matheus on 03/11/2014.
*/
public class TwitterService extends AsyncTask<List<String>, Integer, List<TwitterStatusViewModel>> {
public class TwitterService extends AsyncTask<String, Integer, List<TwitterStatusViewModel>> {
// twitter consumer key and secret
static String TWITTER_CONSUMER_KEY = "UmMKW0XRJyIfr3rlhkxQF6dIF";
static String TWITTER_CONSUMER_SECRET = "sE5lZaMqDwhOERHvJAHD2Bcj4JLwNr5PuHQEXNMHDugxFCNLwj";
Expand All @@ -32,12 +33,27 @@ public class TwitterService extends AsyncTask<List<String>, Integer, List<Twitte
OnTaskCompleted listener;
Twitter twitterService;
OAuth2Token oAuth2Token;
List<TwitterStatusViewModel> tweetsResult = new ArrayList<TwitterStatusViewModel>();

public static TwitterService twitterServiceFactory(OnTaskCompleted listener){
static List<TwitterStatusViewModel> tweetsResult = new ArrayList<TwitterStatusViewModel>();

public static TwitterService twitterServiceFactory(OnTaskCompleted listener) {
if (tweetsResult == null)
tweetsResult = new ArrayList<TwitterStatusViewModel>();

return new TwitterService(listener);
}

public static List<TwitterStatusViewModel> getTweetsResult() {
sortTwitterStatusList(tweetsResult);

return tweetsResult;
}

public static void clearResultList() {
if (tweetsResult != null)
tweetsResult.clear();
}


private TwitterService(OnTaskCompleted listener) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
Expand All @@ -47,12 +63,12 @@ private TwitterService(OnTaskCompleted listener) {

try {
this.twitterService = this.twitterConnect(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
}catch (Exception ex) {
} catch (Exception ex) {
Log.i("Info", ex.getMessage());
}
}

public Twitter twitterConnect(String twitter_consumer_key, String twitter_consumer_secret)throws Exception{
public Twitter twitterConnect(String twitter_consumer_key, String twitter_consumer_secret) throws Exception {
ConfigurationBuilder builder;

try {
Expand All @@ -72,81 +88,81 @@ public Twitter twitterConnect(String twitter_consumer_key, String twitter_consum
return twitterService;
}

public List<TwitterStatusViewModel> getTweets(String username){

public List<TwitterStatusViewModel> getTweets(String username) {
List<TwitterStatusViewModel> twitterStatusList = new ArrayList<TwitterStatusViewModel>();

try {
ResponseList<twitter4j.Status> statuses = this.twitterService.getUserTimeline(username);
twitterStatusList = convertTwitterStatus(statuses);
}
catch (Exception ex) {
DataMining.removeUselessTweets(twitterStatusList);
} catch (Exception ex) {
Log.i("Info", ex.getMessage());
}
this.tweetsResult = twitterStatusList;

return twitterStatusList;
}

public List<TwitterStatusViewModel> getTweets(List<String> usernames){
public List<TwitterStatusViewModel> getTweets(List<String> usernames) {
List<TwitterStatusViewModel> twitterStatusList = new ArrayList<TwitterStatusViewModel>();

for(String username : usernames){
for (String username : usernames) {
twitterStatusList.addAll(this.getTweets(username));
}

/* ordena os tweets por data */
//Collections.sort(twitterStatusList, new DateComparator());

return twitterStatusList;
}

public List<TwitterStatusViewModel> getDumbTweets() {
ArrayList<TwitterStatusViewModel> items = new ArrayList<TwitterStatusViewModel>();

items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu", "@EPTC", "10:29:34 10/10/1990", "https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));

return items;
}


private List<TwitterStatusViewModel> convertTwitterStatus(ResponseList<twitter4j.Status> statuses) {
ArrayList<TwitterStatusViewModel> twitterStatusList = new ArrayList<TwitterStatusViewModel>();

if(statuses == null || statuses.isEmpty())
if (statuses == null || statuses.isEmpty())
return twitterStatusList;

for(twitter4j.Status s: statuses) {
for (twitter4j.Status s : statuses) {
twitterStatusList.add(new TwitterStatusViewModel(s));
}
return twitterStatusList;
}

public List<TwitterStatusViewModel> getDumbTweets(){
ArrayList<TwitterStatusViewModel> items = new ArrayList<TwitterStatusViewModel>();

items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));
items.add(new TwitterStatusViewModel("Caiu um trem queda abaixo ó meu deus do céu","@EPTC", "10:29:34 10/10/1990","https://pbs.twimg.com/profile_images/568363261/logo_EPTC_400x400.jpg"));

return items;
private static void sortTwitterStatusList(List<TwitterStatusViewModel> tweets) {
Collections.sort(tweets, Collections.reverseOrder(new Comparator<TwitterStatusViewModel>() {
public int compare(TwitterStatusViewModel obj1, TwitterStatusViewModel obj2) {
return obj1.getDate().compareTo(obj2.getDate());
}
}));
}

public List<TwitterStatusViewModel> getTweetsResult(){
return this.tweetsResult;
}

@Override
protected List<TwitterStatusViewModel> doInBackground(List<String>... params) {
List<String> usernames = new ArrayList<String>();
protected List<TwitterStatusViewModel> doInBackground(String... params) {
List<TwitterStatusViewModel> tweets = new ArrayList<TwitterStatusViewModel>();

if(params == null && params.length > 0)
if (params == null && params.length > 0)
return tweets;

usernames = params[0];
String username = params[0];

try {
Thread.sleep(200);
tweets = this.getTweets(usernames);
//tweets = this.getDumbTweets(usernames);
this.tweetsResult = tweets;
tweets = this.getTweets(username);
tweetsResult.addAll(tweets);
} catch (InterruptedException e) {
e.printStackTrace();
}
Expand All @@ -156,7 +172,7 @@ protected List<TwitterStatusViewModel> doInBackground(List<String>... params) {
}

@Override
protected void onPostExecute(List<TwitterStatusViewModel> list){
protected void onPostExecute(List<TwitterStatusViewModel> list) {
if (listener != null)
listener.onTaskCompleted();
}
Expand Down

0 comments on commit 746f32f

Please sign in to comment.