package com.QA.waf.settings;
import com.QA.*;
import com.QA.connections.twitter.TwitterUtilities;
import com.QA.messages.StickyNote;
import com.QA.rank.Hit;
import com.QA.waf.QAScreenApp;
import org.hibernate.MappingException;
import org.jblooming.persistence.hibernate.HibernateFactory;
import org.jblooming.persistence.hibernate.PlatformAnnotationConfiguration;
import org.jblooming.security.Permissions;
import org.jblooming.tracer.Tracer;
import org.jblooming.utilities.JSP;
import org.jblooming.waf.AccessControlFilter;
import org.jblooming.waf.ScreenBasic;
import org.jblooming.waf.settings.ApplicationState;
import org.jblooming.waf.settings.ApplicationSupport;
import org.jblooming.waf.settings.I18n;
import org.jblooming.waf.settings.PlatformConfiguration;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;
import javax.servlet.jsp.PageContext;
import java.io.File;
import java.net.URL;
import java.util.SortedMap;
public class QA extends ApplicationSupport {
public static Twitter twitter;
public QA() {
super(QAOperator.class, new Permissions());
// ovverride the default command controller
//ApplicationState.commandController = new TeamworkCommandController();
ApplicationState.platformConfiguration.schedulerRunsByDefault = false;
}
/**
* used in inerithed class
*/
protected QA(Class defaultOperatoSubClass, Permissions[] permissionsImpl) {
super(defaultOperatoSubClass, permissionsImpl);
}
public boolean isLoginCookieEnabled() {
return true;
}
public String getName() {
return "QA";
}
public String getRootFolder() {
return "applications/QA";
}
public void configurePersistence(PlatformConfiguration pc) throws Exception {
try {
PlatformAnnotationConfiguration hibConfiguration = (PlatformAnnotationConfiguration) HibernateFactory.getConfig();
URL ce = HibernateFactory.class.getClassLoader().getResource("qa.hbm.xml");
hibConfiguration.addURL(ce);
hibConfiguration.addAnnotatedClass(Tag.class);
hibConfiguration.addAnnotatedClass(Category.class);
//hibConfiguration.addAnnotatedClass(Badge.class);
hibConfiguration.addAnnotatedClass(Question.class);
hibConfiguration.addAnnotatedClass(QuestionRevision.class);
hibConfiguration.addAnnotatedClass(Answer.class);
hibConfiguration.addAnnotatedClass(AnswerRevision.class);
hibConfiguration.addAnnotatedClass(Comment.class);
hibConfiguration.addAnnotatedClass(Upvote.class);
hibConfiguration.addAnnotatedClass(Hit.class);
hibConfiguration.addAnnotatedClass(StickyNote.class);
} catch (MappingException e) {
throw new RuntimeException(e);
}
}
public void configureFreeAccess(PlatformConfiguration pc) {
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "site");
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "talk");
AccessControlFilter.securedSubFolders.add("applications" + File.separator + "QA" + File.separator + "talk"+ File.separator + "write");
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "show");
//AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "write");
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "screen");
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "css");
AccessControlFilter.freeFolders.add("applications" + File.separator + "QA" + File.separator + "js");
AccessControlFilter.freeFiles.add("");
AccessControlFilter.freeFiles.add("index.jsp");
AccessControlFilter.freeFiles.add("mailing.jsp");
AccessControlFilter.freeFiles.add("applications");
AccessControlFilter.freeFiles.add("applications" + File.separator + "index.jsp");
AccessControlFilter.freeFiles.add("applications" + File.separator + "QA");
AccessControlFilter.freeFiles.add("applications" + File.separator + "QA" + File.separator + "index.jsp");
/*AccessControlFilter.freeFiles.add("applications" + File.separator + "QA" + File.separator + "manage"+ File.separator + "manifesto.jsp");
AccessControlFilter.freeFiles.add("applications" + File.separator + "QA" + File.separator + "manage"+ File.separator + "parts" + File.separator + "manifestPassword.jsp");
AccessControlFilter.freeFiles.add("applications" + File.separator + "QA" + File.separator + "manage"+ File.separator + "proposal.jsp");*/
//AccessControlFilter.freeFiles.add("applications" + File.separator + "QA" + File.separator + "ajax"+ File.separator + "ajaxLoginPendingURLUpdater.jsp");
}
public void configureNeedingPersistence(PlatformConfiguration pc) {
try {
//Twitter twitter = TwitterFactory.getSingleton();
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setUseSSL(true);
cb.setOAuthConsumerKey(TwitterUtilities.getApiKey())
.setOAuthConsumerSecret(TwitterUtilities.getApiKeySecret());
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
} catch (Throwable t) {
Tracer.platformLogger.error("TwitterBaseImpl.setOAuthConsumer ", t);
}
/*try {
MpJobsLauncher.launch("system");
} catch (Exception e) {
Tracer.logExceptionOnPlatformOrOther(e);
} */
}
public ScreenBasic getDefaultScreenInstance() {
return new QAScreenApp();
}
public void configureNeedingPageContext(PageContext pageContext) {
//here insert from i18n
SortedMap<String, I18n.I18nEntry> i18nGS = I18n.getEntriesForApplication("QA");
for (String code : i18nGS.keySet()) {
if (JSP.ex(code) && code.startsWith("GLOBALSETTINGS_")) {
ApplicationState.applicationSettings.put(code.substring("GLOBALSETTINGS_".length()), i18nGS.get(code).getLabel("QA","it"));
}
}
try {
pageContext.include("/applications/QA/settings/badges.jsp");
} catch (Throwable e) {
Tracer.platformLogger.error(e);
}
}
public void applicationDestroy(){
}
}