Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * See the COPYRIGHT.txt file distributed with this work for information
   * regarding copyright ownership.  Some portions may be licensed
   * to Red Hat, Inc. under one or more contributor license agreements.
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  * 02110-1301 USA.
  */
 package org.teiid.olingo.service;
 
 import java.net.URI;
 import java.util.List;
 
 
     private final MetadataStore metadata;
     private String baseURI;
     private ServiceMetadata serviceMetadata;
     
     private ScopedTable updateTable;
     private ScopedTable referenceTable;
     private boolean collection;
     private final ArrayList<SQLParameterparams = new ArrayList<SQLParameter>();
 
     static class ScopedTable extends EntityResource {
         private ForeignKey fk;
         
         public ScopedTable (Table tableEdmEntityType typeList<UriParameterkeys) {            
             setTable(table);
             setEdmEntityType(type);
             setGroupSymbol(new GroupSymbol(table.getFullName()));
             setKeyPredicates(keys);
         }
         public ForeignKey getFk() {
             return ;
         }
         public void setFk(ForeignKey fk) {
             this. = fk;
         }
     }
     
     public ReferenceUpdateSQLBuilder(MetadataStore metadataString baseURIServiceMetadata serviceMetadata) {
         this. = metadata;
         this. = baseURI;
         this. = serviceMetadata;        
     }
 
     @Override
     public void visit(UriResourceEntitySet info) {
         Table table = EntityResource.findTable(info.getEntitySet(), this.);
         EdmEntityType type = info.getEntitySet().getEntityType();
         List<UriParameterkeys = info.getKeyPredicates();
         this. = new ScopedTable(tabletypekeys);
     }
     
     @Override
     public void visit(UriResourceNavigation info) {
         EdmNavigationProperty property = info.getProperty();
         
        this. = new ScopedTable(EntityResource.findTable(property.getType(), 
                this.), property.getType(),
                info.getKeyPredicates());
        
        if (property.isCollection()) {
            ForeignKey fk = EntityResource.joinFK(.getTable(), this..getTable());
            .setFk(fk);
            
            ScopedTable temp = this.;
            this. = ;
            this. = temp;
            this. = true;
        }
        else {
            ForeignKey fk = EntityResource.joinFK(this..getTable(), .getTable());
            this..setFk(fk);
        }
    }    
    
    
    public Update updateReference(URI referenceIdboolean preparedboolean deletethrows SQLException {
        try {
            if (referenceId != null) {
                UriInfo uriInfo = ODataSQLBuilder.buildUriInfo(referenceIdthis.this.);
                UriResourceEntitySet uriEnitytSet = (UriResourceEntitySet)uriInfo.asUriInfoResource().getUriResourceParts().get(0);
                if (this.) {
                    this..setKeyPredicates(uriEnitytSet.getKeyPredicates());
                }
                else {
                    this..setKeyPredicates(uriEnitytSet.getKeyPredicates());
                }
            }
        } catch (UriParserException e) {
            throw new SQLException(e);
        } catch (URISyntaxException e) {
            throw new SQLException(e);
        }
        
        try {
            Update update = new Update();
            update.setGroup(this..getGroupSymbol());
            
            List<StringcolumnNames = EntityResource.getColumnNames(this..getFk().getColumns());
            for (int i = 0; i < columnNames.size(); i++) {
                Column column = this..getFk().getColumns().get(i);
                String columnName = columnNames.get(i);
                ElementSymbol symbol = new ElementSymbol(columnNamethis..getGroupSymbol());
                
                EdmEntityType entityType = this..getEdmEntityType();
                EdmProperty edmProperty = (EdmProperty)entityType.getProperty(columnName);
                
                // reference table keys will be null for delete scenario
                Object value = null;
                if (!delete) {
                    UriParameter parameter = getParameter(this..getFk().getReferenceColumns().get(i),
                            this..getKeyPredicates());
                    value = LiteralParser.parseLiteral(edmPropertycolumn.getJavaType(), parameter.getText());
                }
                
                if (prepared) {
                    update.addChange(symbolnew Reference(i++));
                    this..add(ODataSQLBuilder.asParam(edmPropertyvalue));
                }
                else {
                    update.addChange(symbolnew Constant(ODataSQLBuilder.asParam(edmPropertyvalue).getValue()));
                }
            }
            
            KeyRecord pk = this..getTable().getPrimaryKey();
            if (pk == null) {
                pk = this..getTable().getUniqueKeys().get(0);
            }
            
            Criteria criteria = EntityResource.buildEntityKeyCriteria(
                    this.nullthis.nullnull);
            update.setCriteria(criteria);
            
            return update;
        } catch (TeiidException e) {
            throw new SQLException(e);
        }
    }    
    
    private UriParameter getParameter(String nameList<UriParameterkeys) {
        for (UriParameter parameter:keys) {
            String propertyName = parameter.getName();
            if (propertyName.equals(name)) {
                return parameter;
            }
        }
        return null;
    }
    
    public List<SQLParametergetParameters(){
        return this.;
    }    
New to GrepCode? Check out our FAQ X