/* * Copyright 2010 Fred Sauer * * Licensed 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 com.allen_sauer.gwt.voices.crowd.shared; import java.io.Serializable; import java.util.logging.Level; import java.util.logging.Logger; @SuppressWarnings("serial") public class TestResults implements Serializable, Comparable<TestResults> { private static String MIME_TYPE_AUDIO_MP4 = "audio/mp4"; private static String MIME_TYPE_AUDIO_MP4_MP4A_40_2 = "audio/mp4; codecs=mp4a.40.2"; private static String MIME_TYPE_AUDIO_WAV = "audio/wav"; private static String MIME_TYPE_AUDIO_VND_WAV = "audio/vnd.wave"; private static String MIME_TYPE_AUDIO_VND_WAVE_UNKNOWN = "audio/vnd.wave; codecs=0"; private static String MIME_TYPE_AUDIO_X_WAV_UNKNOWN = "audio/x-wav; codecs=0"; private static String MIME_TYPE_AUDIO_WAV_UNKNOWN = "audio/wav; codecs=0"; private static String MIME_TYPE_AUDIO_VND_WAVE_PCM = "audio/vnd.wave; codecs=1"; private static String MIME_TYPE_AUDIO_X_WAV_PCM = "audio/x-wav; codecs=1"; private static String MIME_TYPE_AUDIO_WAV_PCM = "audio/wav; codecs=1"; private static String MIME_TYPE_AUDIO_VND_WAVE_ADPCM = "audio/vnd-wave; codecs=2"; private static String MIME_TYPE_AUDIO_X_WAV_ADPCM = "audio/x-wav; codecs=2"; private static String MIME_TYPE_AUDIO_WAV_ADPCM = "audio/wav; codecs=2"; private static String MIME_TYPE_AUDIO_BASIC = "audio/basic"; private static String MIME_TYPE_AUDIO_MPEG = "audio/mpeg"; private static String MIME_TYPE_AUDIO_X_AIFF = "audio/x-aiff"; private static String MIME_TYPE_AUDIO_X_MIDI = "audio/x-midi"; private static String MIME_TYPE_AUDIO_X_WAV = "audio/x-wav"; private static String MIME_TYPE_AUDIO_OGG = "audio/ogg"; private static String MIME_TYPE_AUDIO_OGG_VORBIS = "audio/ogg; codecs=vorbis"; private static String MIME_TYPE_AUDIO_OGG_FLAC = "audio/ogg; codecs=flac"; private static String MIME_TYPE_AUDIO_OGG_SPEEX = "audio/ogg; codecs=speex"; public static MimeType[] MIME_TYPES = { new MimeType(MIME_TYPE_AUDIO_BASIC), new MimeType(MIME_TYPE_AUDIO_MPEG), new MimeType(MIME_TYPE_AUDIO_MP4), new MimeType(MIME_TYPE_AUDIO_MP4_MP4A_40_2), new MimeType(MIME_TYPE_AUDIO_X_AIFF), new MimeType(MIME_TYPE_AUDIO_X_MIDI), new MimeType(MIME_TYPE_AUDIO_WAV), new MimeType(MIME_TYPE_AUDIO_X_WAV), new MimeType(MIME_TYPE_AUDIO_VND_WAV), new MimeType(MIME_TYPE_AUDIO_WAV_UNKNOWN), new MimeType(MIME_TYPE_AUDIO_X_WAV_UNKNOWN), new MimeType(MIME_TYPE_AUDIO_VND_WAVE_UNKNOWN), new MimeType(MIME_TYPE_AUDIO_WAV_PCM), new MimeType(MIME_TYPE_AUDIO_X_WAV_PCM), new MimeType(MIME_TYPE_AUDIO_VND_WAVE_PCM), new MimeType(MIME_TYPE_AUDIO_WAV_ADPCM), new MimeType(MIME_TYPE_AUDIO_X_WAV_ADPCM), new MimeType(MIME_TYPE_AUDIO_VND_WAVE_ADPCM), new MimeType(MIME_TYPE_AUDIO_OGG), new MimeType(MIME_TYPE_AUDIO_OGG_FLAC), new MimeType(MIME_TYPE_AUDIO_OGG_SPEEX), new MimeType(MIME_TYPE_AUDIO_OGG_VORBIS),}; private String[] results; private static final Logger logger = Logger.getLogger(TestResults.class.getName()); public TestResults(String testResultsString) { // prevent all trailing '|' from being removed String[] split = (testResultsString + "|bogus").split("\\|"); assert split.length >= MIME_TYPES.length; results = new String[MIME_TYPES.length]; try { System.arraycopy(split, 0, results, 0, results.length); } catch (Exception e) { logger.log(Level.SEVERE, "testResultsString=" + testResultsString, e); } } public TestResults(String[] results) { this.results = results; } public TestResults() { this.results = (new String[] {}); } @Override public String toString() { StringBuffer tr = new StringBuffer(); for (int i = 0; i < MIME_TYPES.length; i++) { if (i > 0) { tr.append("|"); } tr.append(getResults()[i]); } return tr.toString(); } public String[] getResults() { return results; } @Override public boolean equals(Object obj) { return obj instanceof TestResults && toString().equals(obj.toString()); } @Override public int hashCode() { return toString().hashCode(); } public int compareTo(TestResults o) { return toString().compareTo(o.toString()); } }