blob: 0ed5e84c6756e7dbdc693faf2649b83646295fea [file] [log] [blame]
/*************************************************************************************
* Copyright (c) 2012 Red Hat, Inc. and others.
* 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:
* Fred Bricon (Red Hat, Inc.) - initial API and implementation
************************************************************************************/
package org.eclipse.m2e.wtp.jpa;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jpt.jpa.core.resource.persistence.XmlPersistenceUnit;
import org.eclipse.jpt.jpa.core.resource.persistence.XmlProperty;
/**
* JPA Platform manager, used to identify a JPA Platform from the content of a persistence.xml
*
* @author Fred Bricon
*/
public class PlatformIdentifierManager {
private List<IPlatformIdentifier> platformIdentifiers = new ArrayList<IPlatformIdentifier>();
public PlatformIdentifierManager() {
//TODO use extension points
platformIdentifiers.add(new ReallySimplePlatformIdentifer("hibernate")); //$NON-NLS-1$
platformIdentifiers.add(new ReallySimplePlatformIdentifer("eclipselink")); //$NON-NLS-1$
}
/**
* Identifies a JPA Platform from the {@link XmlPersistenceUnit} of a persistence.xml
* by querying all known {@link IPlatformIdentifier}s.
*
* @return the detected {@link JpaPlatformDescription} id or null
*/
public String identify(XmlPersistenceUnit xmlPersistenceUnit) {
String platformId = null;
for (IPlatformIdentifier identifier : platformIdentifiers) {
platformId = identifier.getPlatformId(xmlPersistenceUnit);
if (platformId != null) {
return platformId;
}
}
return null;
}
private class ReallySimplePlatformIdentifer extends AbstractPlatformIdentifier {
private final String platformName;
ReallySimplePlatformIdentifer(String platformName) {
this.platformName = platformName;
}
@Override
protected String identifyProvider(String provider) {
if (provider != null && provider.contains(platformName)) {
return platformName;
}
return null;
}
@Override
protected String identifyProperty(XmlProperty property) {
return identifyProvider(property.getName());
}
}
}