/*******************************************************************************
 * Copyright (c) 2008, 2009 Oracle. 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:
 *     Oracle - initial API and implementation
 ******************************************************************************/
package org.eclipse.jpt.eclipselink.ui.internal.mappings;

import org.eclipse.osgi.util.NLS;

/**
 * The localized strings used by the mapping panes.
 *
 * @version 2.2
 * @since 1.0
 */
@SuppressWarnings("nls")
public class EclipseLinkUiMappingsMessages extends NLS {

	public static String EclipseLinkBasicCollectionMappingUiProvider_label;
	public static String EclipseLinkBasicCollectionMappingUiProvider_linkLabel;
	
	public static String EclipseLinkBasicMapMappingUiProvider_label;
	public static String EclipseLinkBasicMapMappingUiProvider_linkLabel;
	
	public static String EclipseLinkTransformationMappingUiProvider_label;
	public static String EclipseLinkTransformationMappingUiProvider_linkLabel;

	public static String EclipseLinkVariableOneToOneMappingUiProvider_label;
	public static String EclipseLinkVariableOneToOneMappingUiProvider_linkLabel;

	public static String EclipseLinkCacheTypeComposite_label;
	public static String EclipseLinkCacheTypeComposite_full;
	public static String EclipseLinkCacheTypeComposite_weak;
	public static String EclipseLinkCacheTypeComposite_soft;
	public static String EclipseLinkCacheTypeComposite_soft_weak;
	public static String EclipseLinkCacheTypeComposite_hard_weak;
	public static String EclipseLinkCacheTypeComposite_cache;
	public static String EclipseLinkCacheTypeComposite_none;
	public static String EclipseLinkTypeMappingComposite_advanced;
	public static String EclipseLinkTypeMappingComposite_caching;
	public static String EclipseLinkTypeMappingComposite_converters;
	
	public static String EclipseLinkCacheSizeComposite_size;
	public static String EclipseLinkCacheCoordinationTypeComposite_label;
	public static String EclipseLinkCacheCoordinationTypeComposite_send_object_changes;
	public static String EclipseLinkCacheCoordinationTypeComposite_invalidate_changed_objects;
	public static String EclipseLinkCacheCoordinationTypeComposite_send_new_objects_with_changes;
	public static String EclipseLinkCacheCoordinationTypeComposite_none;

	public static String EclipseLinkCachingComposite_sharedLabelDefault;
	public static String EclipseLinkCachingComposite_sharedLabel;
	public static String EclipseLinkCachingComposite_advanced;
	public static String EclipseLinkAlwaysRefreshComposite_alwaysRefreshDefault;
	public static String EclipseLinkAlwaysRefreshComposite_alwaysRefreshLabel;
	public static String EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerDefault;
	public static String EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerLabel;
	public static String EclipseLinkDisableHitsComposite_disableHitsDefault;
	public static String EclipseLinkDisableHitsComposite_disableHitsLabel;
	
	public static String EclipseLinkChangeTrackingComposite_label;
	public static String EclipseLinkChangeTrackingComposite_attribute;
	public static String EclipseLinkChangeTrackingComposite_object;
	public static String EclipseLinkChangeTrackingComposite_deferred;
	public static String EclipseLinkChangeTrackingComposite_auto;
	
	public static String EclipseLinkConvertComposite_converterNameLabel;
	public static String EclipseLinkConvertComposite_defineConverterSection;
	public static String EclipseLinkConvertComposite_default;
	public static String EclipseLinkConvertComposite_custom;
	public static String EclipseLinkConvertComposite_type;
	public static String EclipseLinkConvertComposite_objectType;
	public static String EclipseLinkConvertComposite_struct;
	
	public static String EclipseLinkConverterComposite_nameTextLabel;
	public static String EclipseLinkConverterComposite_classLabel;

	public static String EclipseLinkConvertersComposite_customConverter;
	public static String EclipseLinkConvertersComposite_objectTypeConverter;
	public static String EclipseLinkConvertersComposite_structConverter;
	public static String EclipseLinkConvertersComposite_typeConverter;
	
	public static String EclipseLinkCustomizerComposite_classLabel;
		
	public static String TypeSection_converted;
	
	public static String EclipseLinkExistenceCheckingComposite_label;
	public static String JavaEclipseLinkExistenceCheckingComposite_check_cache;
	public static String JavaEclipseLinkExistenceCheckingComposite_check_database;
	public static String JavaEclipseLinkExistenceCheckingComposite_assume_existence;
	public static String JavaEclipseLinkExistenceCheckingComposite_assume_non_existence;
	public static String OrmEclipseLinkExistenceCheckingComposite_check_cache;
	public static String OrmEclipseLinkExistenceCheckingComposite_check_database;
	public static String OrmEclipseLinkExistenceCheckingComposite_assume_existence;
	public static String OrmEclipseLinkExistenceCheckingComposite_assume_non_existence;
	
	public static String EclipseLinkExpiryComposite_expirySection;
	public static String EclipseLinkExpiryComposite_noExpiry;
	public static String EclipseLinkExpiryComposite_timeToLiveExpiry;
	public static String EclipseLinkExpiryComposite_timeToLiveExpiryExpireAfter;
	public static String EclipseLinkExpiryComposite_timeToLiveExpiryMilliseconds;
	public static String EclipseLinkExpiryComposite_dailyExpiry;
	public static String EclipseLinkExpiryComposite_timeOfDayExpiryExpireAt;
	
	public static String EclipseLinkJoinFetchComposite_label;
	public static String EclipseLinkJoinFetchComposite_inner;
	public static String EclipseLinkJoinFetchComposite_outer;	
	
	public static String EclipseLinkMutableComposite_mutableLabel;
	public static String EclipseLinkMutableComposite_mutableLabelDefault;
	public static String EclipseLinkMutableComposite_true;
	public static String EclipseLinkMutableComposite_false;
	
	public static String EclipseLinkObjectTypeConverterComposite_dataTypeLabel;
	public static String EclipseLinkObjectTypeConverterComposite_objectTypeLabel;
	public static String EclipseLinkObjectTypeConverterComposite_conversionValueEdit;
	public static String EclipseLinkObjectTypeConverterComposite_conversionValuesDataValueColumn;
	public static String EclipseLinkObjectTypeConverterComposite_conversionValuesObjectValueColumn;
	public static String EclipseLinkObjectTypeConverterComposite_defaultObjectValueLabel;
	public static String EclipseLinkObjectTypeConverterComposite_conversionValuesGroupTitle;
	
	public static String EclipseLinkConversionValueDialog_addConversionValue;
	public static String EclipseLinkConversionValueDialog_editConversionValue;
	public static String EclipseLinkConversionValueDialog_addConversionValueDescriptionTitle;
	public static String EclipseLinkConversionValueDialog_editConversionValueDescriptionTitle;
	public static String EclipseLinkConversionValueDialog_addConversionValueDescription;
	public static String EclipseLinkConversionValueDialog_editConversionValueDescription;
	
	public static String EclipseLinkConversionValueDialog_dataValue;
	public static String EclipseLinkConversionValueDialog_objectValue;
	public static String EclipseLinkConversionValueStateObject_dataValueMustBeSpecified;
	public static String EclipseLinkConversionValueStateObject_objectValueMustBeSpecified;
	public static String EclipseLinkConversionValueStateObject_dataValueAlreadyExists;
	
	public static String EclipseLinkPrivateOwnedComposite_privateOwnedLabel;
	
	public static String EclipseLinkReadOnlyComposite_readOnlyLabel;
	public static String EclipseLinkReadOnlyComposite_readOnlyWithDefault;
	
	public static String EclipseLinkTypeConverterComposite_dataTypeLabel;
	public static String EclipseLinkTypeConverterComposite_objectTypeLabel;

	public static String DefaultEclipseLinkOneToOneMappingUiProvider_label;
	public static String DefaultEclipseLinkVariableOneToOneMappingUiProvider_label;
	public static String DefaultEclipseLinkOneToManyMappingUiProvider_label;
	public static String DefaultEclipseLinkOneToOneMappingUiProvider_linkLabel;
	public static String DefaultEclipseLinkVariableOneToOneMappingUiProvider_linkLabel;
	public static String DefaultEclipseLinkOneToManyMappingUiProvider_linkLabel;
	
	public static String EclipseLinkConvertersComposite_Label;
	public static String EclipseLinkConverterDialog_name;
	public static String EclipseLinkConverterDialog_converterType;
	public static String EclipseLinkConverterDialog_addConverter;
	public static String EclipseLinkConverterDialog_addConverterDescriptionTitle;
	public static String EclipseLinkConverterDialog_addConverterDescription;
	public static String EclipseLinkConverterStateObject_nameMustBeSpecified;
	public static String EclipseLinkConverterStateObject_typeMustBeSpecified;
	
	static {
		NLS.initializeMessages("eclipselink_ui_mappings", EclipseLinkUiMappingsMessages.class);
	}

	private EclipseLinkUiMappingsMessages() {
		throw new UnsupportedOperationException();
	}
}