17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ****************************************************************************** 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2007-2010, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ****************************************************************************** 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.impl.duration; 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Collection; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.duration.impl.PeriodFormatterDataService; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.duration.impl.ResourceBasedPeriodFormatterDataService; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * An implementation of PeriodFormatterService that constructs a 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * BasicPeriodFormatterFactory. 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class BasicPeriodFormatterService implements PeriodFormatterService { 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static BasicPeriodFormatterService instance; 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private PeriodFormatterDataService ds; 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Return the default service instance. This uses the default data service. 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @return an BasicPeriodFormatterService 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static BasicPeriodFormatterService getInstance() { 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (instance == null) { 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert PeriodFormatterDataService ds = ResourceBasedPeriodFormatterDataService 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert .getInstance(); 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert instance = new BasicPeriodFormatterService(ds); 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return instance; 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Construct a BasicPeriodFormatterService using the given 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * PeriodFormatterDataService. 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @param ds the data service to use 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public BasicPeriodFormatterService(PeriodFormatterDataService ds) { 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert this.ds = ds; 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public DurationFormatterFactory newDurationFormatterFactory() { 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new BasicDurationFormatterFactory(this); 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public PeriodFormatterFactory newPeriodFormatterFactory() { 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new BasicPeriodFormatterFactory(ds); 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public PeriodBuilderFactory newPeriodBuilderFactory() { 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return new BasicPeriodBuilderFactory(ds); 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public Collection<String> getAvailableLocaleNames() { 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return ds.getAvailableLocales(); 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 63