/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.content.targeting.service.test.lar; import com.liferay.content.targeting.service.test.util.GroupTestUtil; import com.liferay.portal.kernel.dao.orm.FinderCacheUtil; import com.liferay.portal.kernel.lar.ManifestSummary; import com.liferay.portal.kernel.lar.PortletDataContext; import com.liferay.portal.kernel.lar.PortletDataContextFactoryUtil; import com.liferay.portal.kernel.lar.PortletDataHandler; import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean; import com.liferay.portal.kernel.transaction.Transactional; import com.liferay.portal.kernel.util.LongWrapper; import com.liferay.portal.kernel.util.Time; import com.liferay.portal.kernel.xml.Element; import com.liferay.portal.kernel.xml.SAXReaderUtil; import com.liferay.portal.kernel.zip.ZipWriter; import com.liferay.portal.kernel.zip.ZipWriterFactoryUtil; import com.liferay.portal.model.Group; import com.liferay.portal.service.GroupLocalServiceUtil; import com.liferay.portlet.PortletPreferencesImpl; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * @author Zsolt Berentey */ public abstract class BasePortletDataHandlerTestCase { @Before public void setUp() throws Exception { FinderCacheUtil.clearCache(); stagingGroup = GroupTestUtil.addGroup(); portletDataHandler = createPortletDataHandler(); portletId = getPortletId(); } @After public void tearDown() throws Exception { GroupLocalServiceUtil.deleteGroup(stagingGroup); } @Test @Transactional public void testPrepareManifestSummary() throws Exception { initExport(); addStagedModels(); portletDataContext.setEndDate(getEndDate()); portletDataHandler.prepareManifestSummary(portletDataContext); ManifestSummary manifestSummary = portletDataContext.getManifestSummary(); Map<String, LongWrapper> modelAdditionCounters = manifestSummary.getModelAdditionCounters(); Map<String, LongWrapper> expectedModelAdditionCounters = new HashMap<String, LongWrapper>(modelAdditionCounters); modelAdditionCounters.clear(); portletDataHandler.exportData( portletDataContext, portletId, new PortletPreferencesImpl()); checkManifestSummary(expectedModelAdditionCounters); } protected void addBooleanParameter( Map<String, String[]> parameterMap, String namespace, String name, boolean value) { PortletDataHandlerBoolean portletDataHandlerBoolean = new PortletDataHandlerBoolean(namespace, name); parameterMap.put( portletDataHandlerBoolean.getNamespacedControlName(), new String[] {String.valueOf(value)}); } protected void addParameters(Map<String, String[]> parameterMap) { } protected abstract void addStagedModels() throws Exception; protected void checkManifestSummary( Map<String, LongWrapper> expectedModelAdditionCounters) { ManifestSummary manifestSummary = portletDataContext.getManifestSummary(); Map<String, LongWrapper> modelAdditionCounters = manifestSummary.getModelAdditionCounters(); int expectedModelAdditionCountersSize = expectedModelAdditionCounters.size(); for (String manifestSummaryKey : expectedModelAdditionCounters.keySet()) { LongWrapper expectedModelAdditionCounter = expectedModelAdditionCounters.get(manifestSummaryKey); LongWrapper modelAdditionCounter = modelAdditionCounters.get( manifestSummaryKey); if ((expectedModelAdditionCounter.getValue() == 0) && (modelAdditionCounter == null)) { expectedModelAdditionCountersSize--; } else { Assert.assertEquals( expectedModelAdditionCounter.getValue(), modelAdditionCounter.getValue()); } } Assert.assertEquals( modelAdditionCounters.size(), expectedModelAdditionCountersSize); } protected abstract PortletDataHandler createPortletDataHandler(); protected Date getEndDate() { return new Date(); } protected abstract String getPortletId(); protected Date getStartDate() { return new Date(System.currentTimeMillis() - Time.HOUR); } protected void initExport() throws Exception { Map<String, String[]> parameterMap = new LinkedHashMap<String, String[]>(); addParameters(parameterMap); zipWriter = ZipWriterFactoryUtil.getZipWriter(); portletDataContext = PortletDataContextFactoryUtil.createExportPortletDataContext( stagingGroup.getCompanyId(), stagingGroup.getGroupId(), parameterMap, getStartDate(), getEndDate(), zipWriter); rootElement = SAXReaderUtil.createElement("root"); portletDataContext.setExportDataRootElement(rootElement); missingReferencesElement = SAXReaderUtil.createElement( "missing-references"); portletDataContext.setMissingReferencesElement( missingReferencesElement); } protected Element missingReferencesElement; protected PortletDataContext portletDataContext; protected PortletDataHandler portletDataHandler; protected String portletId; protected Element rootElement; protected Group stagingGroup; protected ZipWriter zipWriter; }