package de.jos.labelgenerator.configuration.addressProvider;
import info.ineighborhood.cardme.io.CompatibilityMode;
import info.ineighborhood.cardme.vcard.VCard;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import de.jos.labelgenerator.Constants;
import de.jos.labelgenerator.configuration.Address;
import de.jos.labelgenerator.configuration.VCardAddress;
import de.jos.labelgenerator.vcard.VCardParser;
public class FilesystemVCardAddressProvider implements AddressProvider {
private static final String SUFFIX_VCARD = ".vcf";
private List<VCardAddress> vcards = new ArrayList<VCardAddress>();
public FilesystemVCardAddressProvider() {
final File vcardDirectory = Constants.FILE_DIRECTORY_VCF_FILE;
if (vcardDirectory.exists() && vcardDirectory.isDirectory()) {
// get all files in directory
final String[] fileNames = vcardDirectory.list(new VCFFilter());
System.out.println(fileNames.length);
for (String tmpFileName : fileNames) {
VCardParser vcardParser = new VCardParser();
vcardParser.setCompatibilityMode(CompatibilityMode.RFC2426);
VCard vCard = vcardParser
.getVCard(vcardDirectory.getAbsolutePath() + Constants.SEPARATOR + tmpFileName);
vcards.add(new VCardAddress(vCard));
}
}
}
public List<Address> getAddresses() {
final List<Address> addressList = new ArrayList<Address>();
addressList.addAll(vcards);
return addressList;
}
public static void main(String args[]) {
new FilesystemVCardAddressProvider();
}
private static final class VCFFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
if (StringUtils.endsWith(name, SUFFIX_VCARD)) {
return true;
}
return false;
}
}
}