/*******************************************************************************
* Copyright (c) 2012 Nokia Corporation
* 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
*
* Contributors:
* Comarch team - initial API and implementation
*******************************************************************************/
package org.ned.client.library.advanced;
import java.util.Enumeration;
import java.util.Vector;
import org.ned.client.NedConsts;
import org.ned.client.utils.Sort;
public class LibraryHelpers {
public static Vector sortBy( Vector aMediaList, int aSortBy ) {
switch ( aSortBy ) {
case NedConsts.SortOrder.BY_TYPE:
return sortByType( aMediaList, false );
case NedConsts.SortOrder.BY_TYPE_AND_NAME:
return sortByType( aMediaList, true );
case NedConsts.SortOrder.BY_NAME:
return sortByName( aMediaList );
case NedConsts.SortOrder.NONE:
default:
return aMediaList;
}
}
public static Vector sortByType( Vector aMediaList, boolean aSortByName ) {
Vector video = new Vector( aMediaList.size(), 4 );
Vector audio = new Vector( 4, 4 );
Vector picture = new Vector( 4, 4 );
Vector text = new Vector( 4, 4 );
Vector rest = new Vector( 4, 4 );
LibraryElement content;
String type;
Enumeration en = aMediaList.elements();
while ( en.hasMoreElements() ) {
content = (LibraryElement)en.nextElement();
type = content.getDetails().getType();
if ( type.equals( NedConsts.NedContentType.VIDEO ) ) {
video.addElement( content );
} else if ( type.equals( NedConsts.NedContentType.AUDIO ) ) {
audio.addElement( content );
} else if ( type.equals( NedConsts.NedContentType.IMAGE ) ) {
picture.addElement( content );
} else if ( type.equals( NedConsts.NedContentType.TEXT ) ) {
text.addElement( content );
} else {
rest.addElement( content );
}
}
if ( aSortByName ) {
Sort.sort( video );
Sort.sort( audio );
Sort.sort( picture );
Sort.sort( rest );
}
addVectors( video, audio );
addVectors( video, picture );
addVectors( video, text );
return addVectors( video, rest );
}
public static Vector addVectors( Vector aL, Vector aR ) {
Enumeration en = aR.elements();
while ( en.hasMoreElements() ) {
aL.addElement( en.nextElement() );
}
return aL;
}
public static Vector filter( Vector aInput, IFilter aFilter ) {
Vector output = new Vector( aInput.size(), 1 );
Enumeration en = aInput.elements();
while ( en.hasMoreElements() ) {
LibraryElement object = (LibraryElement)en.nextElement();
if ( aFilter.isMatch( object ) ) {
output.addElement( object );
}
}
return output;
}
private static Vector sortByName( Vector aMediaList ) {
Vector toBeSorted = new Vector( aMediaList.size() );
final Enumeration en = aMediaList.elements();
while ( en.hasMoreElements() ) {
toBeSorted.addElement( en.nextElement() );
}
Sort.sort( toBeSorted );
return toBeSorted;
}
}