/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package aplicacion;
import buscador.Buscador;
import buscador.TiposDeBusqueda;
import com.twitterapime.model.MetadataSet;
import com.twitterapime.rest.Credential;
import com.twitterapime.rest.TweetER;
import com.twitterapime.rest.UserAccountManager;
import com.twitterapime.search.LimitExceededException;
import com.twitterapime.search.Tweet;
import conf.ManejadorDeConfiguracion;
import dbtweets.DbTweets;
import java.io.IOException;
/**
*
* @author Alan
*/
public class TweeterFacade {
private DbTweets db;
private Buscador buscador;
private ManejadorDeConfiguracion cfg;
public TweeterFacade() {
super();
db = DbTweets.getInstance();
cfg=ManejadorDeConfiguracion.getInstance();
}
/*****************************************************************************
* Comunes
*/
private UserAccountManager login() {
String user = (String) cfg.getUser();
String pass = (String) cfg.getPass();
String consumerKey = "LDMQEFW35SC91fM4xtlfVw";
String consumerSecret = "DEjgPTmyWX55j6ZPNefpTZ9ImE7QCLrdyhQslDKoY";
Credential c = new Credential(user, pass);//, consumerKey,consumerSecret);
return UserAccountManager.getInstance(c);
}
public boolean setCredenciales(String u,String p){
Credential c = new Credential(u, p);//, consumerKey,consumerSecret);
try {
if( UserAccountManager.getInstance(c).verifyCredential()){
cfg.setUser(u);
cfg.setPass(p);
return true;
}else{
return false;
}
} catch (IOException ex) {
ex.printStackTrace();
return false;
} catch (LimitExceededException ex) {
ex.printStackTrace();
return false;
}
}
public boolean credencialesValidas(){
try {
return login().verifyCredential();
} catch (IOException ex) {
ex.printStackTrace();
return false;
} catch (LimitExceededException ex) {
ex.printStackTrace();
return false;
}
}
public String getUsuario(){
return cfg.getUser();
}
public String getContrasena(){
return cfg.getPass();
}
public void setUsuario(String user){
cfg.setUser(user);
}
public void setContrasena(String pass){
cfg.setPass(pass);
}
public boolean getAutoSend(){
return cfg.isAutoEnviar();
}
public void setAutoSend(boolean b){
cfg.setAutoEnviar(b);
}
public boolean getTruncarTweets(){
return cfg.isTruncarTweets();
}
public void setTruncarTweets(boolean b){
cfg.setTruncarTweets(b);
}
public int getTweetsPagina(){
return cfg.getTweetsPorpagina();
}
public void setTweetsPagina(int n){
cfg.setTweetsPorpagina(n);
}
public void guardarConfiguracion(){
cfg.saveConfiguration();
}
/*****************************************************************************
* TWeets
*/
public dbtweets.Tweet[] getTweetsSalvados() {
dbtweets.Tweet[] ret = new dbtweets.Tweet[db.getNumberOfRecords()];
db.resetNextId();
int i = 0;
while (db.hasMoreTweets()) {
ret[i++] = db.next();
}
return ret;
}
public void eliminarTweetSalvado(dbtweets.Tweet t) {
db.deleteTweet(t);
}
public void salvarTweetEditado(dbtweets.Tweet t) {
db.saveTweet(t);
}
public void enviarTweetSalvado(dbtweets.Tweet t) {
eliminarTweetSalvado(t);
tweet(t.getContenido());
}
public void enviarTodosTweetsSalvados() {
dbtweets.Tweet[] ts = getTweetsSalvados();
for (int i = 0; i < ts.length; i++) {
enviarTweetSalvado(ts[i]);
}
}
public boolean tweet(String contenido) {
boolean ret = false;
UserAccountManager m = login();
try {
if (m.verifyCredential()) {
Tweet t = new Tweet(contenido);
TweetER ter = TweetER.getInstance(m);
t = ter.post(t);
ret = true;
} else {
throw new Exception("Sin Credenciales");
}
} catch (Exception e) {
db.saveTweet(new dbtweets.Tweet(contenido));
e.printStackTrace();
}
return ret;
}
public boolean reTweet(Tweet t) {
boolean ret = false;
UserAccountManager m = login();
try {
if (m.verifyCredential()) {
TweetER ter = TweetER.getInstance(m);
Tweet t1 = ter.findByID(t.getString(MetadataSet.TWEET_ID));
t1 = ter.repost(t1);
ret = true;
} else {
throw new Exception("Sin Credenciales");
}
} catch (Exception e) {
// db.saveTweet(new dbtweets.Tweet(contenido));
e.printStackTrace();
}
return ret;
}
public int getNumeroTweetsSalvados(){
int ret = db.getNumberOfRecords();
if(ret<0){ret=0;}
return ret;
}
public void cerrarConfiguracion(){
//cfg.cerrar();
}
/*****************************************************************************
* Busqueda
*/
public Tweet[] buscarTag(String criteria) {
return buscar(criteria, TiposDeBusqueda.POR_TAG);
}
public Tweet[] buscarContenido(String criteria) {
return buscar(criteria, TiposDeBusqueda.POR_CONTENIDO);
}
public Tweet[] buscarAutor(String criteria) {
return buscar(criteria, TiposDeBusqueda.POR_AUTOR);
}
public Tweet[] buscarSiguientePagina() {
if (buscador == null) {
return null;
}
return buscador.siguientePagina();
}
private Tweet[] buscar(String criteria, int tipoBusqueda) {
if (buscador == null || buscador.getTipoBusqueda() != tipoBusqueda) {
buscador = new Buscador(criteria, tipoBusqueda);
}
return buscador.siguientePagina();
}
}