/* * This file is part of the OpenSCADA project * Copyright (C) 2006-2012 TH4 SYSTEMS GmbH (http://th4-systems.com) * * OpenSCADA is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenSCADA 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 version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenSCADA. If not, see * <http://opensource.org/licenses/lgpl-3.0.html> for a copy of the LGPLv3 License. */ package org.openscada.ca.ui.importer.wizard; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.openscada.ca.DiffEntry; public final class DiffEntryHelper { private DiffEntryHelper () { } public static Object[] diffChilds ( final DiffEntry entry ) { final Map<String, DiffSubEntry> childs = makeChilds ( entry ); final List<DiffSubEntry> result = new ArrayList<DiffSubEntry> ( childs.values () ); Collections.sort ( result ); return result.toArray (); } public static Object diffChildsByIndex ( final DiffEntry entry, final int index ) { final Map<String, DiffSubEntry> childs = makeChilds ( entry ); final List<DiffSubEntry> result = new ArrayList<DiffSubEntry> ( childs.values () ); Collections.sort ( result ); return result.get ( index ); } private static Map<String, DiffSubEntry> makeChilds ( final DiffEntry entry ) { final Map<String, DiffSubEntry> childs = new LinkedHashMap<String, DiffSubEntry> (); // new entries if ( entry.getNewData () != null ) { for ( final Map.Entry<String, String> data : entry.getNewData ().entrySet () ) { final DiffSubEntry subEntry = new DiffSubEntry ( entry, data.getKey () ); subEntry.setNewValue ( data.getValue () ); childs.put ( data.getKey (), subEntry ); } } // old entries if ( entry.getOldData () != null ) { for ( final Map.Entry<String, String> data : entry.getOldData ().entrySet () ) { DiffSubEntry subEntry = childs.get ( data.getKey () ); if ( subEntry == null ) { subEntry = new DiffSubEntry ( entry, data.getKey () ); childs.put ( data.getKey (), subEntry ); } subEntry.setOldValue ( data.getValue () ); } } return childs; } }