Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   * Other names may be trademarks of their respective owners.
   *
   * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common
  * Development and Distribution License("CDDL") (collectively, the
  * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * http://www.netbeans.org/cddl-gplv2.html
  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  * specific language governing permissions and limitations under the
  * License.  When distributing the software, include this License Header
  * Notice in each file and include the License file at
  * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Oracle in the GPL Version 2 section of the License file that
  * accompanied this code. If applicable, add the following below the
  * License Header, with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * Contributor(s):
  *
  * The Original Software is NetBeans. The Initial Developer of the Original
  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2008 Sun
  * Microsystems, Inc. All Rights Reserved.
  *
  * If you wish your version of this file to be governed by only the CDDL
  * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
  * your version of this file under either the CDDL, the GPL Version 2 or
  * to extend the choice of license to its licensees as provided above.
  * However, if you add GPL Version 2 code and therefore, elected the GPL
  * Version 2 license, then the option applies only if the new code is
  * made subject to such option by the copyright holder.
  */
 
 package org.netbeans.modules.ide.ergonomics.fod;
 
 import java.util.Set;

Author(s):
Jirka Rechtacek
 
 public final class FindComponentModules {
     private static final RequestProcessor RP = new RequestProcessor("Find Modules");
     
     private final Collection<StringcodeNames;
     private final FeatureInfo[] infos;
     public final String DO_CHECK = "do-check";
     private final String ENABLE_LATER = "enable-later";
     private RequestProcessor.Task findingTask;
     private Collection<UpdateElementforInstall = null;
     private Collection<UpdateElementforEnable = null;
     
     public FindComponentModules(FeatureInfo infoFeatureInfo... additional) {
         ArrayList<FeatureInfol = new ArrayList<FeatureInfo>();
         l.add(info);
         l.addAll(Arrays.asList(additional));
         this. = l.toArray(new FeatureInfo[0]);
         if (. == 1) {
              = info.getCodeNames();
         } else {
              = new HashSet<String>(info.getCodeNames());
             for (FeatureInfo fi : additional) {
                 .addAll(fi.getCodeNames());
             }
         }
          = .post();
     }
     
 
        .waitFinished();
        return ;
    }
        .waitFinished();
        return ;
    }
    
    public void writeEnableLater (Collection<UpdateElementmodules) {
        Preferences pref = FindComponentModules.getPreferences ();
        if (modules == null) {
            pref.remove ();
            return ;
        }
        String value = "";
        for (UpdateElement m : modules) {
            value += value.length () == 0 ? m.getCodeName () : ", " + m.getCodeName (); // NOI18N
        }
        if (value.trim ().length () == 0) {
            pref.remove ();
        } else {
            pref.put (value);
        }
    }
    private Set<StringclusterClosure(Collection<UpdateElementall) {
        HashSet<Stringclosure = new HashSet<String>();
        for (UpdateElement ue : all) {
            for (FeatureInfo featureInfo : FeatureManager.features()) {
                if (featureInfo.getCodeNames().contains(ue.getCodeName())) {
                    closure.addAll(featureInfo.getCodeNames());
                }
            }
        }
        return closure;
    }
    
    private Collection<UpdateElementreadEnableLater () {
        Set<UpdateElementres = new HashSet<UpdateElement> ();
        Preferences pref = FindComponentModules.getPreferences ();
        String value = pref.get (null);
        if (value != null && value.trim ().length () > 0) {
            Enumeration en = new StringTokenizer (value","); // NOI18N
            while (en.hasMoreElements ()) {
                String codeName = ((Stringen.nextElement ()).trim ();
                UpdateElement el = findUpdateElement (codeNametrue);
                if (el != null) {
                    res.add (el);
                }
            }
        }
        return res;
    }
    
        String prefCNB = [0].getPreferredCodeNameBase();
        Collection<UpdateElementres = new HashSet<UpdateElement> ();
        for (UpdateElement el : new LinkedList<UpdateElement> (elems)) {
            if (...equals (el.getUpdateUnit ().getType ())) {
                res.add (el);
            }
            if (el.getUpdateUnit().getCodeName().equals(prefCNB)) {
                return Collections.singleton(el);
            }
        }
        if (res.size() > 1) {
            ..warning("No prefCNB found " + prefCNB + " using multiple " + res);
        }
        return res;
    }
    public static Preferences getPreferences () {
        return NbPreferences.forModule (FindComponentModules.class);
    }
    private Runnable doFind = new Runnable () {
        public void run() {
            findComponentModules ();
        }
    };
    private void findComponentModules () {
        long start = System.currentTimeMillis();
        Collection<UpdateUnitunits = UpdateManager.getDefault ().getUpdateUnits (..);
        // install missing modules
        Collection<UpdateElementelementsForInstall = getMissingModules (units);
         = getAllForInstall (elementsForInstall);
        // install disabled modules
        Collection<UpdateElementelementsForEnable = getDisabledModules (units);
         = getAllForEnable (elementsForEnableunits);
    }
    
        Set<UpdateElementres = new HashSet<UpdateElement> ();
        for (UpdateUnit unit : allUnits) {
            if (unit.getInstalled () == null && .contains(unit.getCodeName ())) {
                res.add (unit.getAvailableUpdates ().get (0));
            }
        }
        return res;
    }
    
        Collection<UpdateElementall = new HashSet<UpdateElement> ();
        for (UpdateElement el : elements) {
            OperationContainer<InstallSupportocForInstall = OperationContainer.createForInstall ();
            if (ocForInstall.canBeAdded (el.getUpdateUnit (), el)) {
                OperationContainer.OperationInfo<InstallSupportinfo = ocForInstall.add (el);
                if (info == null) {
                    continue;
                }
                Set<UpdateElementreqs = info.getRequiredElements ();
                ocForInstall.add (reqs);
                Set<Stringbreaks = info.getBrokenDependencies ();
                if (breaks.isEmpty ()) {
                    all.add (el);
                    all.addAll (reqs);
                }
            }
        }
        return all;
    }
    
        Set<UpdateElementres = new HashSet<UpdateElement> ();
        for (UpdateUnit unit : allUnits) {
            if (unit.getInstalled () != null && .contains(unit.getCodeName ())) {
                if (! unit.getInstalled ().isEnabled ()) {
                    res.add (unit.getInstalled ());
                }
            }
        }
        return res;
    }
    
        Collection<UpdateElementtoAdd = elements;
        Collection<UpdateElementall = new HashSet<UpdateElement> ();
        Collection<Stringignore = new HashSet<String>();
        OperationContainer<OperationSupportocForEnable = OperationContainer.createForEnable ();
        for (;;) {
            if (toAdd.isEmpty()) {
                break;
            }
            for (UpdateElement el : toAdd) {
                if (el == null) {
                    continue;
                }
                if (ocForEnable.canBeAdded (el.getUpdateUnit (), el)) {
                    OperationContainer.OperationInfo<OperationSupportinf = ocForEnable.add (el);
                    if (inf == null) {
                        continue;
                    }
                    Set<UpdateElementreqs = inf.getRequiredElements ();
                    ocForEnable.add (reqs);
//                    Set<String> breaks = inf.getBrokenDependencies ();
//                    if (breaks.isEmpty ()) {
                        all.add (el);
                        all.addAll (reqs);
//                    } else {
//                        FoDFileSystem.LOG.fine("Cannot enable " + el.getCodeName() + " broken deps: " + breaks); // NOI18N
//                        ignore.add(el.getCodeName());
//                    }
                } else {
                    ignore.add(el.getCodeName());
                }
            }
            Set<StringclusterClosure = clusterClosure(all);
            for (UpdateElement el : all) {
                clusterClosure.remove(el.getCodeName());
            }
            clusterClosure.removeAll(ignore);
            if (clusterClosure.isEmpty()) {
                break;
            }
            toAdd = new HashSet<UpdateElement>();
            for (UpdateUnit uu : units) {
                if (clusterClosure.contains(uu.getCodeName())) {
                    toAdd.add(uu.getInstalled());
                }
            }
        }
        return all;
    }
    
    private static UpdateElement findUpdateElement (String codeNameboolean isInstalled) {
        UpdateElement res = null;
        for (UpdateUnit u : UpdateManager.getDefault ().getUpdateUnits (..)) {
            if (codeName.equals (u.getCodeName ())) {
                if (isInstalled && u.getInstalled () != null) {
                    res = u.getInstalled ();
                } else if (! isInstalled && ! u.getAvailableUpdates ().isEmpty ()) {
                    res = u.getAvailableUpdates ().get (0);
                }
                break;
            }
        }
        return res;
    }
New to GrepCode? Check out our FAQ X