All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.devocative.demeter.web.page.StartupHandlerPage Maven / Gradle / Ivy

The newest version!
package org.devocative.demeter.web.page;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.devocative.demeter.core.DbDiffVO;
import org.devocative.demeter.core.DemeterCore;
import org.devocative.demeter.core.EStartupStep;
import org.devocative.demeter.core.StepResultVO;
import org.devocative.demeter.web.Index;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

public class StartupHandlerPage extends WebPage {
	private static final long serialVersionUID = -283332983407600664L;

	private static final Logger logger = LoggerFactory.getLogger(StartupHandlerPage.class);

	private int retry = 0;
	private StepResultVO latestStat;

	public StartupHandlerPage(PageParameters pageParameters) {
		latestStat = DemeterCore.get().getLatestStat();

		final List dbDiffs = new ArrayList<>();
		if (latestStat.getStep() == EStartupStep.Database) {
			try {
				dbDiffs.addAll(DemeterCore.get().getDbDiffs());
			} catch (Exception e) {
				logger.warn("StartupHandlerPage: DemeterCore.get().getDbDiffs(): {}", e.getMessage());
			}
		}

		add(new Label("step", new PropertyModel<>(latestStat, "step")));
		add(new Label("error", new PropertyModel<>(latestStat, "error")));
		add(new Label("retry", new PropertyModel<>(this, "retry")));

		Form form = new Form<>("form");
		//form.setVisible(!dbDiffs.isEmpty());
		form.add(new ListView("diffs", dbDiffs) {
			private static final long serialVersionUID = 2909592281545402814L;

			@Override
			protected void populateItem(ListItem item) {
				DbDiffVO diffVO = item.getModelObject();
				item.add(new Label("module", diffVO.getModule()));
				item.add(new Label("version", diffVO.getVersion()));
				item.add(new Label("file", diffVO.getFile()));
				item.add(new TextArea<>("sql", new Model<>(diffVO.getSql())));
			}
		});

		form.add(new Button("apply") {
			private static final long serialVersionUID = -2417464048199954007L;

			@Override
			public void onSubmit() {
				DemeterCore.get().applyDbDiffs(dbDiffs);
				DemeterCore.get().resume();
				setResponsePage(Index.class, pageParameters);
			}
		}.setVisible(!dbDiffs.isEmpty()));

		form.add(new Link("resume") {
			private static final long serialVersionUID = 7843257940731113723L;

			@Override
			public void onClick() {
				DemeterCore.get().resume();
				latestStat = DemeterCore.get().getLatestStat();
				retry++;

				if (latestStat.getStep() == EStartupStep.End) {
					setResponsePage(Index.class, pageParameters);
				}
			}
		});
		add(form);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy