/** * (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.wicket.xliff; import java.io.IOException; import java.io.OutputStream; import java.util.Map; import org.apache.wicket.model.IModel; import org.apache.wicket.request.resource.AbstractResource; import org.apache.wicket.request.resource.ContentDisposition; import org.jabylon.properties.Resolvable; import org.jabylon.rest.ui.wicket.panels.PropertyListMode; /** * @author c.samulski (2016-02-05) */ public final class XliffDownloadResource extends AbstractResource { private static final long serialVersionUID = 1L; private final Map<Language, Language> languageMap; private final IModel<Resolvable<?, ?>> projectVersion; private final PropertyListMode filter; public XliffDownloadResource(Map<Language, Language> languageMap, IModel<Resolvable<?, ?>> projectVersion, PropertyListMode filter) { this.languageMap = languageMap; this.projectVersion = projectVersion; this.filter = filter; } @Override protected ResourceResponse newResourceResponse(Attributes attributes) { ResourceResponse resourceResponse = new ResourceResponse(); resourceResponse.setContentType("application/zip"); resourceResponse.setTextEncoding("UTF-8"); resourceResponse.setContentDisposition(ContentDisposition.ATTACHMENT); resourceResponse.setFileName(getFileName()); resourceResponse.setWriteCallback(new WriteCallback() { @Override public void writeData(Attributes attributes) throws IOException { OutputStream outputStream = attributes.getResponse().getOutputStream(); new XliffDownloadHelper(projectVersion, languageMap, filter, outputStream).handleXliffDownload(); } }); resourceResponse.disableCaching(); return resourceResponse; } private String getFileName() { return projectVersion.getObject().getName() + ".zip"; } }