/*
* Copyright 2011 Peter Karich, jetwick_@_pannous_._info.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* under the License.
*/
package de.jetwick.ui;
import com.google.inject.Inject;
import com.google.inject.Provider;
import de.jetwick.data.JTag;
import de.jetwick.es.ElasticTagSearch;
import de.jetwick.es.ElasticUserSearch;
import de.jetwick.es.JetwickQuery;
import de.jetwick.tw.TwitterSearch;
import de.jetwick.util.Helper;
import java.util.Date;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Peter Karich, jetwick_@_pannous_._info
*/
public class JetwickPage extends WebPage {
@Inject
protected Provider<ElasticTagSearch> tagindexProvider;
@Inject
protected Provider<ElasticUserSearch> uindexProvider;
private final Logger logger = LoggerFactory.getLogger(getClass());
public JetwickPage() {
this(true);
}
public JetwickPage(boolean enableDefaultStyle) {
if (enableDefaultStyle)
add(CSSPackageResource.getHeaderContribution("css/style.css"));
// <link wicket:id="style" rel="stylesheet" type="text/css" href="css/style.css"/>
// add(new WebMarkupContainer("style").setVisible(enableDefaultStyle));
}
public void init(PageParameters parameters) {
initSession();
init(createQuery(parameters), parameters);
}
public JetwickQuery createQuery(PageParameters parameters) {
throw new RuntimeException("implement this");
}
public void init(JetwickQuery createQuery, PageParameters parameters) {
throw new RuntimeException("implement this method");
}
public void postProcessing(final JetwickQuery q) {
// we clean up tags after 2 days so this is ok
// if (!getMySession().hasLoggedIn())
// return;
if (q.getQuery().length() < 2)
return;
if (!getMySession().hasLoggedIn()) {
if (q.getQuery().startsWith("#") || q.getQuery().startsWith("%"))
return;
}
JTag t = new JTag(q.getQuery());
if (!Helper.isEmpty(q.extractUserName()))
t.setUser(q.extractUserName());
tagindexProvider.get().queueObject(t, true);
}
public void initSession() {
try {
String msg = getMySession().getSessionTimeOutMessage();
if (!msg.isEmpty())
warn(msg);
} catch (Exception ex) {
logger.error("Error on twitter4j init.", ex);
error("Couldn't login. Please file report to http://twitter.com/jetwick " + new Date());
}
}
public MySession getMySession() {
return (MySession) getSession();
}
public TwitterSearch getTwitterSearch() {
return getMySession().getTwitterSearch();
}
protected void myConfigureResponse() {
// 1. searchAndGetUsers for wikileak
// 2. apply de filter
// 3. Show latest tweets (of user sebringl)
// back button + de filter => WicketRuntimeException: component filterPanel:filterNames:1:filterValues:2:filterValueLink not found on page de.jetwick.ui.HomePage
// http://www.richardnichols.net/2010/03/apache-wicket-force-page-reload-to-fix-ajax-back/
// http://blogs.atlassian.com/developer/2007/12/cachecontrol_nostore_considere.html
// M1.5 org.apache.wicket.request.http.WebResponse.disableCaching()
WebResponse response = getWebRequestCycle().getWebResponse();
response.setHeader("Cache-Control", "no-cache, max-age=0,must-revalidate, no-store");
}
}