001    package org.hackystat.projectbrowser.page.projects;
002    
003    import org.apache.wicket.markup.html.basic.Label;
004    import org.apache.wicket.markup.html.form.Button;
005    import org.apache.wicket.markup.html.form.Form;
006    import org.apache.wicket.markup.html.form.TextField;
007    import org.apache.wicket.markup.html.panel.Panel;
008    import org.apache.wicket.model.PropertyModel;
009    import org.hackystat.dailyprojectdata.client.DailyProjectDataClient;
010    import org.hackystat.dailyprojectdata.client.DailyProjectDataClientException;
011    import org.hackystat.projectbrowser.ProjectBrowserSession;
012    import org.hackystat.telemetry.service.client.TelemetryClient;
013    import org.hackystat.telemetry.service.client.TelemetryClientException;
014    
015    /**
016     * Panel that provides clear cache confirmation.
017     * 
018     * @author Randy Cox
019     */
020    public class ProjClearCachePanel extends Panel {
021    
022      /** Support serialization. */
023      private static final long serialVersionUID = 1L;
024    
025      /**
026       * Constructor for this class.
027       * 
028       * @param id the wicket id.
029       */
030      public ProjClearCachePanel(String id) {
031        super(id);
032    
033        final ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
034        final ProjectsModel model = session.getProjectsModel();
035    
036        Form projectForm = new Form("projClearCacheForm") {
037          /** Support serialization. */
038          private static final long serialVersionUID = 1L;
039        };
040    
041        TextField projName = new TextField("projectName", new PropertyModel(model, "projectName"));
042        projName.setEnabled(false);
043        projectForm.add(projName);
044    
045        Button clearCacheButton = new Button("clearCacheButton") {
046          /** Support serialization. */
047          private static final long serialVersionUID = 1L;
048    
049          /** Deletes project. */
050          @Override
051          public void onSubmit() {
052            System.err.println("ProjClearCachePanel.clearCacheButton.onSubmit()");
053    
054            DailyProjectDataClient dpdClient = ProjectBrowserSession.get().getDailyProjectDataClient();
055            TelemetryClient telemetryClient =  ProjectBrowserSession.get().getTelemetryClient();
056    
057            try {
058              dpdClient.clearServerCache(model.getProjectOwner(), model.getProjectName());
059              telemetryClient.clearServerCache(model.getProjectOwner(), model.getProjectName());
060              session.getProjClearCachePanel().setVisible(false);
061              session.getProjListPanel().setVisible(true);
062            }
063            catch (DailyProjectDataClientException e) {
064              model.setFeedback(e.getMessage());
065            }
066            catch (TelemetryClientException e) {
067              model.setFeedback(e.getMessage());
068            }
069          }
070        };
071        projectForm.add(clearCacheButton);
072    
073        Button cancelButton = new Button("cancelButton") {
074          /** For serialization. */
075          private static final long serialVersionUID = 1L;
076    
077          /** Cancel clear cache and return to list page. */
078          @Override
079          public void onSubmit() {
080            System.err.println("ProjClearCachePanel.cancleButton.onSubmit()");
081            ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
082            session.getProjClearCachePanel().setVisible(false);
083            session.getProjListPanel().setVisible(true);
084          }
085        };
086        projectForm.add(cancelButton);
087    
088        Label feedbackLabel = new Label("clearCacheFeedback", new PropertyModel(model, "feedback"));
089        session.setFeedbackLabel(feedbackLabel);
090        projectForm.add(feedbackLabel);
091        add(projectForm);
092      }
093    
094    }