001 package org.hackystat.projectbrowser.authentication; 002 003 import java.util.ArrayList; 004 import java.util.List; 005 006 import org.apache.wicket.behavior.HeaderContributor; 007 import org.apache.wicket.markup.html.WebPage; 008 import org.apache.wicket.markup.html.basic.Label; 009 import org.hackystat.dailyprojectdata.client.DailyProjectDataClient; 010 import org.hackystat.projectbrowser.ProjectBrowserApplication; 011 import org.hackystat.projectbrowser.imageurl.ImageUrl; 012 import org.hackystat.sensorbase.client.SensorBaseClient; 013 import org.hackystat.telemetry.service.client.TelemetryClient; 014 015 /** 016 * Provides a signin page for either logging in with a previous username and password, or 017 * else registering with the system. 018 * 019 * @author Philip Johnson 020 */ 021 public class SigninPage extends WebPage { 022 023 /** Support serialization. */ 024 private static final long serialVersionUID = 1L; 025 026 /** 027 * Create the SigninPage. 028 */ 029 public SigninPage() { 030 ProjectBrowserApplication app = (ProjectBrowserApplication)getApplication(); 031 add(HeaderContributor.forCss(org.hackystat.projectbrowser.Start.class, 032 "style/boilerplate/screen.css", "screen")); 033 add(HeaderContributor.forCss(org.hackystat.projectbrowser.Start.class, 034 "style/boilerplate/print.css", "print")); 035 add(new Label("title", app.getApplicationName())); 036 add(new ImageUrl("application-logo", app.getApplicationLogo())); 037 add(new Label("application-name", (app.hasApplicationLogo() ? "" : app.getApplicationName()))); 038 add(new SigninForm("signinForm")); 039 add(new RegisterForm("registerForm")); 040 List<String> serviceInfo = getServiceInfo(); 041 add(new Label("available", serviceInfo.get(0))); 042 add(new Label("notAvailable", serviceInfo.get(1))); 043 } 044 045 /** 046 * Returns a list containing two strings. The first string indicates the services that 047 * were contacted successfully. The second string indicates the services that were not 048 * contacted successfully. 049 * @return A list of two strings indicating service availability. 050 */ 051 private List<String> getServiceInfo() { 052 List<String> serviceInfo = new ArrayList<String>(); 053 StringBuffer available = new StringBuffer(20); 054 StringBuffer notAvailable = new StringBuffer(22); 055 available.append("Available services: "); 056 notAvailable.append("Unavailable services: "); 057 058 ProjectBrowserApplication app = (ProjectBrowserApplication)getApplication(); 059 String sensorbase = app.getSensorBaseHost(); 060 if (SensorBaseClient.isHost(sensorbase)) { 061 available.append(sensorbase); 062 } 063 else { 064 notAvailable.append(sensorbase); 065 } 066 String dpd = app.getDailyProjectDataHost(); 067 if (DailyProjectDataClient.isHost(dpd)) { 068 available.append(' ').append(dpd); 069 } 070 else { 071 notAvailable.append(' ').append(dpd); 072 } 073 String telemetry = app.getTelemetryHost(); 074 if (TelemetryClient.isHost(telemetry)) { 075 available.append(' ').append(telemetry); 076 } 077 else { 078 notAvailable.append(' ').append(telemetry); 079 } 080 String availableString = ((available.length() > 20) ? 081 available.toString() : ""); 082 String notAvailableString = ((notAvailable.length() > 22) ? 083 notAvailable.toString() : ""); 084 085 serviceInfo.add(availableString); 086 serviceInfo.add(notAvailableString); 087 return serviceInfo; 088 } 089 }