/**
* Licensed to Jasig under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Jasig licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a
* copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jasig.portal.io.xml;
import java.util.EnumSet;
import java.util.Formatter;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.jasig.portal.logging.AppendableLogger;
import org.jasig.portal.logging.LogLevel;
import org.jasig.portal.utils.TableFormatter;
import org.jasig.portal.utils.TableFormatter.TableEntry;
import org.slf4j.Logger;
/**
* @author Eric Dalquist
* @version $Revision$
*/
public final class PortalDataHandlerServiceUtils {
private PortalDataHandlerServiceUtils() {
}
private enum Operations {
EXPORT,
DELETE
}
public static void format(IPortalDataHandlerService dataHandlerService, Logger l) {
final Formatter f = new Formatter(new AppendableLogger(l, LogLevel.INFO));
final Map<String, Set<Operations>> portalDataTypes = new TreeMap<String, Set<Operations>>();
final Iterable<IPortalDataType> exportPortalDataTypes = dataHandlerService.getExportPortalDataTypes();
addDataTypes(portalDataTypes, exportPortalDataTypes, Operations.EXPORT);
final Iterable<IPortalDataType> deletePortalDataTypes = dataHandlerService.getDeletePortalDataTypes();
addDataTypes(portalDataTypes, deletePortalDataTypes, Operations.DELETE);
final TableFormatter tableFormatter = new TableFormatter(
new TableEntry<String>("Data Type", "-", "s"),
new TableEntry<String>("Export", "-", "s"),
new TableEntry<String>("Delete", "-", "s"));
for (final Map.Entry<String, Set<Operations>> portalDataTypeEntry : portalDataTypes.entrySet()) {
final String typeId = portalDataTypeEntry.getKey();
final Set<Operations> ops = portalDataTypeEntry.getValue();
tableFormatter.addRow(
new TableEntry<String>(typeId, "-", "s"),
new TableEntry<Boolean>(ops.contains(Operations.EXPORT), "-", "b"),
new TableEntry<Boolean>(ops.contains(Operations.DELETE), "-", "b"));
}
tableFormatter.format(f);
}
public static void format(Iterable<? extends IPortalData> data, Logger l) {
final Formatter f = new Formatter(new AppendableLogger(l, LogLevel.INFO));
final TableFormatter tableFormatter = new TableFormatter(
new TableEntry<String>("sysid", "-", "s"),
new TableEntry<String>("Description", "-", "s"));
for (final IPortalData it : data) {
final String dataId = it.getDataId();
String dataTitle = it.getDataTitle();
if (dataTitle == null || dataTitle.equals(dataId)) {
dataTitle = "";
}
tableFormatter.addRow(
new TableEntry<String>(dataId, "-", "s"),
new TableEntry<String>(dataTitle, "-", "s"));
}
tableFormatter.format(f);
}
/**
* @param portalDataTypes
* @param exportPortalDataTypes
* @param operation
*/
private static void addDataTypes(final Map<String, Set<Operations>> portalDataTypes,
final Iterable<IPortalDataType> exportPortalDataTypes, final Operations operation) {
for (final IPortalDataType portalDataType : exportPortalDataTypes) {
final String typeId = portalDataType.getTypeId();
Set<Operations> supports = portalDataTypes.get(typeId);
if (supports == null) {
supports = EnumSet.of(operation);
portalDataTypes.put(typeId, supports);
}
else {
supports.add(operation);
}
}
}
}