/**
* (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 java.util.Map;
import org.apache.wicket.model.IModel;
import org.jabylon.properties.Property;
import org.jabylon.properties.PropertyFileDescriptor;
import com.google.common.base.Function;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
/**
* @author Johannes Utzig (jutzig.dev@googlemail.com)
*
*/
public class PropertyFileModel implements IModel<Map<String, Property>> {
private Supplier<Map<String,Property>> supplier;
private EObjectModel<PropertyFileDescriptor> model;
public PropertyFileModel(PropertyFileDescriptor descriptor) {
model = new EObjectModel<PropertyFileDescriptor>(descriptor);
supplier = Suppliers.memoize(Suppliers.compose(new PropertyFileLoader(), Suppliers.ofInstance(model)));
}
@Override
public void detach() {
// nothing to do
}
@Override
public void setObject(Map<String, Property> arg0) {
// TODO Auto-generated method stub
}
@Override
public Map<String, Property> getObject() {
return supplier.get();
}
}
class PropertyFileLoader implements Function<IModel<PropertyFileDescriptor>, Map<String, Property>>, Serializable
{
@Override
public Map<String, Property> apply(IModel<PropertyFileDescriptor> from) {
return from.getObject().loadProperties().asMap();
}
}