View Javadoc
1   package ca.uhn.fhir.jpa.util;
2   
3   /*-
4    * #%L
5    * HAPI FHIR JPA Server
6    * %%
7    * Copyright (C) 2014 - 2018 University Health Network
8    * %%
9    * Licensed under the Apache License, Version 2.0 (the "License");
10   * you may not use this file except in compliance with the License.
11   * You may obtain a copy of the License at
12   * 
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   * #L%
21   */
22  
23  import org.hibernate.dialect.DerbyTenSevenDialect;
24  import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtracter;
25  import org.hibernate.exception.spi.ViolatedConstraintNameExtracter;
26  import org.slf4j.Logger;
27  import org.slf4j.LoggerFactory;
28  
29  import java.sql.SQLException;
30  
31  public class DerbyTenSevenHapiFhirDialect extends DerbyTenSevenDialect {
32  
33  	private static final Logger ourLog = LoggerFactory.getLogger(DerbyTenSevenHapiFhirDialect.class);
34  
35  	@Override
36  	public ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter() {
37  		return new TemplatedViolatedConstraintNameExtracter() {
38  			@Override
39  			protected String doExtractConstraintName(SQLException theSqlException) throws NumberFormatException {
40  				switch (theSqlException.getSQLState()) {
41  					case "23505":
42  						return this.extractUsingTemplate("unique or primary key constraint or unique index identified by '", "'", theSqlException.getMessage());
43  					default:
44  						return null;
45  				}
46  			}
47  		};
48  	}
49  
50  }