/* * Copyright (c) 2008, 2009, 2010, 2011 Denis Tulskiy * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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. * * You should have received a copy of the GNU Lesser General Public License * version 3 along with this work. If not, see <http://www.gnu.org/licenses/>. */ package com.tulskiy.musique.system.configuration; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.configuration.HierarchicalConfiguration; import com.tulskiy.musique.gui.playlist.PlaylistColumn; import com.tulskiy.musique.playlist.Playlist; import com.tulskiy.musique.system.Application; /** * Author: Maksim Liauchuk * Date: Aug 27, 2011 */ public class PlaylistConfiguration { private PlaylistConfiguration() { // prevent instantiation } @Deprecated public static String getColumnKey() { return getPlaylistKey() + ".columns.column"; } @Deprecated public static List<PlaylistColumn> getColumns() { Configuration config = Application.getInstance().getConfiguration(); List<String> columnsRaw = (List<String>) config.getList(getColumnKey()); ArrayList<PlaylistColumn> columns = new ArrayList<PlaylistColumn>(); if (!CollectionUtils.isEmpty(columnsRaw)) { for (String columnRaw : columnsRaw) { columns.add(new PlaylistColumn(columnRaw)); } } return columns; } @Deprecated /* * Temporary method to convert old configuration values. */ public static void setColumnsRaw(List<String> values) { Configuration config = Application.getInstance().getConfiguration(); config.setList(getColumnKey(), values); } public static String getTabBoundKey() { return "playlists.tabs.bounds.bound"; } // TODO refactor bounds: String->Int public static List<String> getTabBounds() { Configuration config = Application.getInstance().getConfiguration(); return (List<String>) config.getList(getTabBoundKey()); } public static List<String> getTabBounds(List<String> def) { Configuration config = Application.getInstance().getConfiguration(); return (List<String>) config.getList(getTabBoundKey(), def); } @Deprecated /* * Temporary method to convert old configuration values. */ public static void setTabBoundsRaw(List<String> values) { Configuration config = Application.getInstance().getConfiguration(); config.setList(getTabBoundKey(), values); } public static void setTabBounds(List<Integer> values) { Configuration config = Application.getInstance().getConfiguration(); config.setList(getTabBoundKey(), values); } public static String getPlaylistKey() { return "playlists.playlist"; } public static List<Playlist> getPlaylists() { ArrayList<Playlist> playlists = new ArrayList<Playlist>(); Configuration config = Application.getInstance().getConfiguration(); Iterator pConfs = config.configurationsAt(getPlaylistKey()).iterator(); while (pConfs.hasNext()) { Playlist playlist = new Playlist(); playlist.setColumns(new LinkedList<PlaylistColumn>()); HierarchicalConfiguration pConf = (HierarchicalConfiguration) pConfs.next(); playlist.setName(pConf.getString("name", "Default")); playlist.setGroupBy(pConf.getString("groupBy")); playlist.setLibraryView(pConf.getBoolean("isLibraryView", false)); Iterator cConfs = pConf.configurationsAt("columns.column").iterator(); while (cConfs.hasNext()) { PlaylistColumn column = new PlaylistColumn(); HierarchicalConfiguration cConf = (HierarchicalConfiguration) cConfs.next(); column.setName(cConf.getString("name")); column.setExpression(cConf.getString("expression")); column.setSize(cConf.getInt("size")); column.setAllign(cConf.getInt("alignment")); playlist.getColumns().add(column); } playlists.add(playlist); } return playlists; } public static List<Playlist> getPlaylists(List<Playlist> def) { List<Playlist> playlists = getPlaylists(); if (CollectionUtils.isEmpty(playlists)) { playlists.addAll(def); } return playlists; } @Deprecated /* * Temporary method to convert old configuration values. */ public static void setPlaylistsRaw(List<String> playlistsRaw) { List<Playlist> playlists = new LinkedList<Playlist>(); for (String playlistRaw : playlistsRaw) { Playlist playlist = new Playlist(playlistRaw); playlist.setColumns(getColumns()); playlists.add(playlist); } setPlaylists(playlists); } public static void setPlaylists(List<Playlist> playlists) { Configuration config = Application.getInstance().getConfiguration(); config.clearTree(getPlaylistKey()); for (int i = 0; i < playlists.size(); i++) { Playlist playlist = playlists.get(i); config.addProperty(getPlaylistKey() + "(-1)" + ".name", playlist.getName()); config.addProperty(getPlaylistKey() + ".groupBy", playlist.getGroupBy()); config.addProperty(getPlaylistKey() + ".isLibraryView", playlist.isLibraryView()); for (int j = 0; j < playlist.getColumns().size(); j++) { PlaylistColumn column = playlist.getColumns().get(j); if (i == 0 && j == 0) { config.addProperty(getPlaylistKey() + ".columns(-1).column(-1).name", column.getName()); } else { config.addProperty(getPlaylistKey() + ".columns.column(-1).name", column.getName()); } config.addProperty(getPlaylistKey() + ".columns.column.expression", column.getExpression()); config.addProperty(getPlaylistKey() + ".columns.column.size", column.getSize()); config.addProperty(getPlaylistKey() + ".columns.column.alignment", column.getAllign()); } } } }