/** * (C) Copyright 2013 Jabylon (http://www.jabylon.org) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jabylon.rest.ui.model; import java.io.Serializable; import org.apache.wicket.model.IModel; import org.jabylon.common.progress.Progression; import org.jabylon.rest.ui.Activator; import com.google.common.base.Function; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; public class ProgressionModel implements IModel<Progression> { private static final long serialVersionUID = 1L; protected Supplier<Progression> modelSupplier; private String id; public ProgressionModel(String id) { this.modelSupplier = Suppliers.memoize(Suppliers.compose(new LookupFunction(), Suppliers.ofInstance(id))); this.id = id; } @Override public void detach() { //nothing to do } public String getId() { return id; } public void setTaskID(String id) { this.modelSupplier = Suppliers.memoize(Suppliers.compose(new LookupFunction(), Suppliers.ofInstance(id))); this.id = id; } @Override public Progression getObject() { return modelSupplier.get(); } @Override public void setObject(Progression object) { throw new UnsupportedOperationException("Readonly model"); //$NON-NLS-1$ } private static final class LookupFunction implements Serializable, Function<String, Progression> { private static final long serialVersionUID = 1L; @Override public Progression apply(String from) { return Activator.getDefault().getProgressService().progressionOf(from); } } }