Example usage for java.util.logging Level FINEST

List of usage examples for java.util.logging Level FINEST

Introduction

In this page you can find the example usage for java.util.logging Level FINEST.

Prototype

Level FINEST

To view the source code for java.util.logging Level FINEST.

Click Source Link

Document

FINEST indicates a highly detailed tracing message.

Usage

From source file:edu.umass.cs.reconfiguration.Reconfigurator.java

/**
 * Incorporates demand reports (possibly but not necessarily with replica
 * coordination), checks for reconfiguration triggers, and initiates
 * reconfiguration if needed./*from   ww  w .  ja v  a2  s. co m*/
 * 
 * @param report
 * @param ptasks
 * @return MessagingTask, typically null. No protocol tasks spawned.
 */
public GenericMessagingTask<NodeIDType, ?>[] handleDemandReport(DemandReport<NodeIDType> report,
        ProtocolTask<NodeIDType, ReconfigurationPacket.PacketType, String>[] ptasks) {
    log.log(Level.FINEST, "{0} received {1} {2}", new Object[] { this, report.getType(), report });
    if (report.needsCoordination())
        this.DB.handleIncoming(report, null); // coordinated
    else
        this.updateDemandProfile(report); // no coordination
    ReconfigurationRecord<NodeIDType> record = this.DB.getReconfigurationRecord(report.getServiceName());
    if (record != null)
        // coordinate and commit reconfiguration intent
        this.initiateReconfiguration(report.getServiceName(), record,
                shouldReconfigure(report.getServiceName()), null, null, null, null, null, null); // coordinated
    trimAggregateDemandProfile();
    return null; // never any messaging or ptasks
}

From source file:com.google.enterprise.connector.salesforce.storetype.DBStore.java

public DocListEntry getDocsImmediatelyAfter(String checkpoint) {
    DatabaseMetaData dbm = null;// w  w  w. j  a  v a  2s  . c  om
    Connection connection = null;

    try {

        connection = ds.getConnection();
        connection.setAutoCommit(true);

        dbm = connection.getMetaData();
        //get the most recent database row after 'checkpoint'
        if (dbm.getDatabaseProductName().equals("MySQL")) {
            Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            String update_stmt = "select crawl_set,insert_timestamp,UNCOMPRESS(crawl_data) as cdata from "
                    + this.instance_table + " where crawl_set>" + checkpoint + "  LIMIT 1";
            logger.log(Level.FINER, update_stmt);
            ResultSet rs = statement.executeQuery(update_stmt);

            boolean ret_rows = rs.first();

            if (!ret_rows) {
                logger.log(Level.FINER, "No Rows Returned.");
                connection.close();
                return null;
            }
            BigDecimal crawl_set = null;
            String crawl_data = null;
            while (ret_rows) {
                crawl_set = rs.getBigDecimal("crawl_set");
                //crawl_data = rs.getString("crawl_data");
                crawl_data = rs.getString("cdata");
                ret_rows = rs.next();
            }

            rs.close();
            statement.close();
            connection.close();

            //BASE64 DECODE 
            byte[] byte_decoded_entry = org.apache.commons.codec.binary.Base64
                    .decodeBase64(crawl_data.getBytes());
            crawl_data = new String(byte_decoded_entry);

            logger.log(Level.INFO, "Returning from DBStore. Index Value: " + crawl_set.toPlainString());
            logger.log(Level.FINEST, "Returning from DBStore. " + crawl_data);
            DocListEntry dret = new DocListEntry(crawl_set.toPlainString(), crawl_data);
            return dret;
        }
    } catch (Exception ex) {
        logger.log(Level.SEVERE, "Unable to retrieve docListEntry " + ex);
    }
    return new DocListEntry(checkpoint, null);
}

From source file:ffx.ui.MainPanel.java

/**
 * {@inheritDoc}/*www. java2  s.co  m*/
 *
 * Handle most File, Selection, Trajectory, Simulation, Window and Help Menu
 * Commands This should probably be partitioned between a few different
 * handlers
 */
@Override
public void actionPerformed(ActionEvent evt) {
    String arg = evt.getActionCommand();
    if (logger.isLoggable(Level.FINEST)) {
        logger.finest(" Action: " + arg);
    }
    // File Commands
    if (arg.equals("Open")) {
        open();
    } else if (arg.equals("DownloadFromPDB")) {
        openFromPDB();
    } else if (arg.equals("SaveAs")) {
        saveAsXYZ(null);
    } else if (arg.equals("Close")) {
        close();
    } else if (arg.equals("CloseAll")) {
        closeAll();
    } else if (arg.equals("ChooseKeyFile")) {
        chooseKey();
    } else if (arg.equals("ChooseLogFile")) {
        chooseLog();
    } else if (arg.equals("LoadInducedData")) {
        openInduced();
        // Selection Commands
    } else if (arg.equals("SelectAll")) {
        selectAll();
    } else if (arg.equals("MergeSelections")) {
        merge();
    } else if (arg.equals("HighlightSelections")) {
        highlightSelections(evt);
        // Trajectory
    } else if (arg.equals("Play")) {
        play();
    } else if (arg.equals("Stop")) {
        stop();
    } else if (arg.equals("StepForward")) {
        stepForward();
    } else if (arg.equals("StepBack")) {
        stepBack();
    } else if (arg.equals("Reset")) {
        reset();
    } else if (arg.equals("Oscillate")) {
        oscillate(evt);
    } else if (arg.equals("Frame")) {
        frame();
    } else if (arg.equals("Speed")) {
        speed();
    } else if (arg.equals("Skip")) {
        skip();
        // Simulation
    } else if (arg.equals("ConnectToLocalJob")) {
        connectToTINKER(null, null);
    } else if (arg.equals("ConnectToRemoteJob")) {
        connect();
    } else if (arg.equals("ReleaseJob")) {
        release();
    } else if (arg.equals("SetPort")) {
        setPort();
    } else if (arg.equals("SetRemoteJobAddress")) {
        setRemoteJobAddress();
        // Window
    } else if (arg.equals("ShowToolBar")) {
        showToolBar(evt);
    } else if (arg.equals("ShowTree")) {
        showTree(evt);
    } else if (arg.equals("ShowGlobalAxes")) {
        showGlobalAxes(evt);
    } else if (arg.equals("ResetPanes")) {
        resetPanes();
    } else if (arg.equals("ResetConsole")) {
        resetShell();
    } else if (arg.equals("OceanLookAndFeel")) {
        oceanLookAndFeel();
    } else if (arg.equals("WindowsLookAndFeel") || arg.equals("MacOSXLookAndFeel")
            || arg.equals("MotifLookAndFeel")) {
        platformLookAndFeel();
    } else if (arg.equals("ShrinkGraphicsWindow")) {
        resizePanes(20);
    } else if (arg.equals("ExpandGraphicsWindow")) {
        resizePanes(-20);
        // Help
    } else if (arg.equals("HelpContents")) {
        help();
    } else if (arg.equals("About")) {
        about();
        // Others
    } else if (arg.equals("GarbageCollect")) {
        Runtime.getRuntime().runFinalization();
        Runtime.getRuntime().gc();
    } else if (arg.equals("Exit")) {
        exit();
    } else {
        try {
            ClassLoader cl = MainPanel.class.getClassLoader();
            URL url = cl.getResource(arg);
            logger.info(url.toString());
            File structureFile = new File(url.getFile());
            logger.info(structureFile.toString());
            String tempFile = StringUtils.copyInputStreamToTmpFile(url.openStream(), structureFile.getName(),
                    "pdb");
            open(tempFile);
        } catch (Exception e) {
            System.err.println("MainPanel - Menu command not found: " + arg);
        }

    }
}

From source file:org.apache.myfaces.ov2021.application.jsp.JspStateManagerImpl.java

@Override
public UIViewRoot restoreView(FacesContext facesContext, String viewId, String renderKitId) {
    if (log.isLoggable(Level.FINEST))
        log.finest("Entering restoreView - viewId: " + viewId + " ; renderKitId: " + renderKitId);

    UIViewRoot uiViewRoot = null;//from   w w  w.  j  a v a2 s  . c o m

    ViewDeclarationLanguage vdl = facesContext.getApplication().getViewHandler()
            .getViewDeclarationLanguage(facesContext, viewId);
    StateManagementStrategy sms = null;
    if (vdl != null) {
        sms = vdl.getStateManagementStrategy(facesContext, viewId);
    }

    if (sms != null) {
        if (log.isLoggable(Level.FINEST))
            log.finest("Redirect to StateManagementStrategy: " + sms.getClass().getName());

        uiViewRoot = sms.restoreView(facesContext, viewId, renderKitId);
    } else {
        RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, renderKitId);
        ResponseStateManager responseStateManager = renderKit.getResponseStateManager();

        Object state;
        if (isSavingStateInClient(facesContext)) {
            if (log.isLoggable(Level.FINEST))
                log.finest("Restoring view from client");

            state = responseStateManager.getState(facesContext, viewId);
        } else {
            if (log.isLoggable(Level.FINEST))
                log.finest("Restoring view from session");

            Integer serverStateId = getServerStateId(
                    (Object[]) responseStateManager.getState(facesContext, viewId));

            state = (serverStateId == null) ? null
                    : getSerializedViewFromServletSession(facesContext, viewId, serverStateId);
        }

        if (state != null) {
            Object[] stateArray = (Object[]) state;
            TreeStructureManager tsm = new TreeStructureManager();
            uiViewRoot = tsm.restoreTreeStructure(stateArray[0]);

            if (uiViewRoot != null) {
                facesContext.setViewRoot(uiViewRoot);
                uiViewRoot.processRestoreState(facesContext, stateArray[1]);
            }
        }
    }
    if (log.isLoggable(Level.FINEST))
        log.finest("Exiting restoreView - " + viewId);

    return uiViewRoot;
}

From source file:edu.harvard.iq.safe.lockss.impl.DaemonStatusDataUtil.java

public static String getUTCOffsetString(long hour, long min) {
    long lhour = hour;

    if (Math.abs(hour) >= 0 && Math.abs(hour) <= 23) {
        // within the normal range
        // do nothing
    } else if (Math.abs(hour) == 24) {
        lhour = 0L;// www . ja v  a  2s .co m
    } else {
        // set to 0
        lhour = 0L;
    }

    long lmin = Math.abs(min);
    if (lmin >= 0 && lmin <= 59) {
        // within the normal range
        // however, there might be some second-level difference between 
        // the header time and the lockss-page rendering one 
        // such as -4:59 instead of -05:00
        if (lmin <= 2) {
            // set back to zero
            // no hour change
            lmin = 0L;

        } else if (lmin >= 28L && lmin <= 32L) {
            // min set to 30; no hour change
            lmin = 30L;

        } else if (lmin >= 58) {
            // hour +1, min set to 0
            lmin = 0L;
            if (lhour < 0) {
                lhour--;
            } else {
                lhour++;
            }
        }

    } else {
        // out-of-the normal range
        // set to 0
        lmin = 0L;
    }

    logger.log(Level.FINEST, "hour={0}=>lhour{1}", new Object[] { hour, lhour });
    logger.log(Level.FINEST, " min={0}=>lmin={1}", new Object[] { min, lmin });

    return String.format(" %+03d%02d", lhour, lmin);
}

From source file:com.cyberway.issue.crawler.fetcher.FetchFTP.java

/**
 * Adds an extracted filename to the curi.  A new URI will be formed
 * by taking the given curi (which should represent the directory the
 * file lives in) and appending the file.
 * /*from   w  ww .  jav a 2 s. c  o  m*/
 * @param curi  the curi to store the discovered link in
 * @param file  the filename of the discovered link
 */
private void addExtracted(CrawlURI curi, String file) {
    try {
        file = URLEncoder.encode(file, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        throw new AssertionError(e);
    }
    if (logger.isLoggable(Level.FINEST)) {
        logger.log(Level.FINEST, "Found " + file);
    }
    String base = curi.toString();
    if (base.endsWith("/")) {
        base = base.substring(0, base.length() - 1);
    }
    try {
        UURI n = UURIFactory.getInstance(base + "/" + file);
        Link link = new Link(curi.getUURI(), n, NAVLINK_MISC, NAVLINK_HOP);
        curi.addOutLink(link);
    } catch (URIException e) {
        logger.log(Level.WARNING, "URI error during extraction.", e);
    }
}

From source file:com.google.enterprise.connector.salesforce.storetype.DBStore.java

public void setDocList(String checkpoint, String str_store_entry) {

    DatabaseMetaData dbm = null;//from w w w. j a v  a 2 s. com
    Connection connection = null;

    logger.log(Level.FINEST, "Setting doclist " + checkpoint);
    logger.log(Level.FINEST, "Setting store_entry " + str_store_entry);
    try {

        connection = ds.getConnection();
        connection.setAutoCommit(true);

        dbm = connection.getMetaData();

        //logger.log(Level.FINE,"Base64 ENCODING...");
        String encode_entry = new String(
                org.apache.commons.codec.binary.Base64.encodeBase64(str_store_entry.getBytes()));
        str_store_entry = encode_entry;

        //logger.log(Level.FINE,"Setting store_entry ENCODED " + str_store_entry);

        if (dbm.getDatabaseProductName().equals("MySQL")) {
            //get the most recent row
            Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            String update_stmt = "select crawl_set from " + this.instance_table
                    + " where crawl_set=(select max(crawl_set) from " + this.instance_table + ")";
            logger.log(Level.FINE, "Getting lastentryp in db: " + update_stmt);
            ResultSet rs = statement.executeQuery(update_stmt);

            boolean ret_rows = rs.first();

            String last_entry_in_db = null;

            while (ret_rows) {
                BigDecimal crawl_set = rs.getBigDecimal("crawl_set");
                last_entry_in_db = crawl_set.toPlainString();
                ret_rows = rs.next();
            }

            logger.log(Level.FINER, "Last_Entry_in_Database " + last_entry_in_db);

            if (last_entry_in_db != null) {
                if (last_entry_in_db.startsWith(checkpoint)) {
                    //increment if in the same set
                    BigDecimal bd = new BigDecimal(last_entry_in_db);
                    bd = bd.add(new BigDecimal(".00001"));
                    logger.log(Level.INFO, "Adding to DBStore. Index Value: " + bd.toPlainString());
                    update_stmt = "insert into " + this.instance_table
                            + " (crawl_set,crawl_data) values (?,COMPRESS(?))";

                    PreparedStatement ps = connection.prepareStatement(update_stmt);
                    ps.setString(1, bd.toPlainString());
                    ps.setString(2, str_store_entry);
                    ps.executeUpdate();
                    ps.close();
                } else {
                    //otherwise add the the 0th row for this set
                    logger.log(Level.INFO, "Adding to DBStore. Index Value: " + checkpoint + ".00000");
                    update_stmt = "insert into " + this.instance_table
                            + " (crawl_set,crawl_data) values (?,COMPRESS(?))";
                    PreparedStatement ps = connection.prepareStatement(update_stmt);
                    ps.setString(1, checkpoint + ".00000");
                    ps.setString(2, str_store_entry);
                    ps.executeUpdate();
                    ps.close();
                }
            } else {
                logger.log(Level.INFO, "Adding to DBStore. Index Value: " + checkpoint + ".00000");
                update_stmt = "insert into " + this.instance_table
                        + " (crawl_set,crawl_data) values (?,COMPRESS(?))";
                PreparedStatement ps = connection.prepareStatement(update_stmt);
                ps.setString(1, checkpoint + ".00000");
                ps.setString(2, str_store_entry);
                ps.executeUpdate();
                ps.close();

            }

            rs.close();
            statement.close();
            connection.close();
        }
    } catch (Exception ex) {
        logger.log(Level.SEVERE, "Exception initializing context Datasource " + ex);
        return;
    }
}

From source file:org.syncany.plugins.webdav.WebdavTransferManager.java

private ConnectionSocketFactory initSsl() throws Exception {
    TrustStrategy trustStrategy = new TrustStrategy() {
        @Override//from www. ja va  2  s . co m
        public boolean isTrusted(X509Certificate[] certificateChain, String authType)
                throws CertificateException {
            logger.log(Level.INFO, "WebDAV: isTrusted(" + certificateChain.toString() + ", " + authType + ")");

            try {
                // First check if already in trust store, if so; okay!
                X509Certificate serverCertificate = certificateChain[0];

                for (int i = 0; i < certificateChain.length; i++) {
                    X509Certificate certificate = certificateChain[i];

                    logger.log(Level.FINE,
                            "WebDAV: Checking certificate validity: " + certificate.getSubjectDN().toString());
                    logger.log(Level.FINEST, "WebDAV:              Full certificate: " + certificate);

                    // Check validity
                    try {
                        certificate.checkValidity();
                    } catch (CertificateException e) {
                        logger.log(Level.FINE, "WebDAV: Certificate is NOT valid.", e);
                        return false;
                    }

                    logger.log(Level.FINE, "WebDAV: Checking is VALID.");

                    // Certificate found; we trust this, okay!
                    if (inTrustStore(certificate)) {
                        logger.log(Level.FINE, "WebDAV: Certificate found in trust store.");
                        return true;
                    }

                    // Certificate is new; continue ...
                    else {
                        logger.log(Level.FINE, "WebDAV: Certificate NOT found in trust store.");
                    }
                }

                // We we reach this code, none of the CAs are known in the trust store
                // So we ask the user if he/she wants to add the server certificate to the trust store  
                UserInteractionListener userInteractionListener = getSettings().getUserInteractionListener();

                if (userInteractionListener == null) {
                    throw new RuntimeException("pluginListener cannot be null!");
                }

                boolean userTrustsCertificate = userInteractionListener.onUserConfirm(
                        "Unknown SSL/TLS certificate", formatCertificate(serverCertificate),
                        "Do you want to trust this certificate?");

                if (!userTrustsCertificate) {
                    logger.log(Level.INFO, "WebDAV: User does not trust certificate. ABORTING.");
                    throw new RuntimeException("User does not trust certificate. ABORTING.");
                }

                logger.log(Level.INFO, "WebDAV: User trusts certificate. Adding to trust store.");
                addToTrustStore(serverCertificate);

                return true;
            } catch (KeyStoreException e) {
                logger.log(Level.SEVERE, "WebDAV: Key store exception.", e);
                return false;
            }
        }

        private boolean inTrustStore(X509Certificate certificate) throws KeyStoreException {
            String certAlias = getCertificateAlias(certificate);
            return UserConfig.getUserTrustStore().containsAlias(certAlias);
        }

        private void addToTrustStore(X509Certificate certificate) throws KeyStoreException {
            String certAlias = getCertificateAlias(certificate);
            UserConfig.getUserTrustStore().setCertificateEntry(certAlias, certificate);

            hasNewCertificates = true;
        }

        private String getCertificateAlias(X509Certificate certificate) {
            return StringUtil.toHex(certificate.getSignature());
        }
    };

    SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, trustStrategy).useTLS().build();

    return new SSLConnectionSocketFactory(sslContext, new AllowAllHostnameVerifier());
}

From source file:ffx.crystal.Crystal.java

/**
 * Update all Crystal variables that are a function of unit cell parameters.
 *//*from  w ww .  ja  v  a2s .c o m*/
private void updateCrystal() {

    switch (crystalSystem) {
    case CUBIC:
    case ORTHORHOMBIC:
    case TETRAGONAL:
        cos_alpha = 0.0;
        sin_beta = 1.0;
        cos_beta = 0.0;
        sin_gamma = 1.0;
        cos_gamma = 0.0;
        beta_term = 0.0;
        gamma_term = 1.0;
        volume = a * b * c;
        dVdA = b * c;
        dVdB = a * c;
        dVdC = a * b;
        dVdAlpha = 0.0;
        dVdBeta = 0.0;
        dVdGamma = 0.0;
        break;
    case MONOCLINIC:
        cos_alpha = 0.0;
        sin_beta = sin(toRadians(beta));
        cos_beta = cos(toRadians(beta));
        sin_gamma = 1.0;
        cos_gamma = 0.0;
        beta_term = 0.0;
        gamma_term = sin_beta;
        volume = sin_beta * a * b * c;
        dVdA = sin_beta * b * c;
        dVdB = sin_beta * a * c;
        dVdC = sin_beta * a * b;
        dVdAlpha = 0.0;
        dVdBeta = cos_beta * a * b * c;
        dVdGamma = 0.0;
        break;
    case HEXAGONAL:
    case TRICLINIC:
    case TRIGONAL:
    default:
        double sin_alpha = sin(toRadians(alpha));
        cos_alpha = cos(toRadians(alpha));
        sin_beta = sin(toRadians(beta));
        cos_beta = cos(toRadians(beta));
        sin_gamma = sin(toRadians(gamma));
        cos_gamma = cos(toRadians(gamma));
        beta_term = (cos_alpha - cos_beta * cos_gamma) / sin_gamma;
        gamma_term = sqrt(sin_beta * sin_beta - beta_term * beta_term);
        volume = sin_gamma * gamma_term * a * b * c;

        dVdA = sin_gamma * gamma_term * b * c;
        dVdB = sin_gamma * gamma_term * a * c;
        dVdC = sin_gamma * gamma_term * a * b;

        double dbeta = 2.0 * sin_beta * cos_beta
                - (2.0 * (cos_alpha - cos_beta * cos_gamma) * sin_beta * cos_gamma) / (sin_gamma * sin_gamma);
        double dgamma1 = -2.0 * (cos_alpha - cos_beta * cos_gamma) * cos_beta / sin_gamma;
        double dgamma2 = cos_alpha - cos_beta * cos_gamma;
        dgamma2 *= dgamma2 * 2.0 * cos_gamma / (sin_gamma * sin_gamma * sin_gamma);
        dVdAlpha = (cos_alpha - cos_beta * cos_gamma) * sin_alpha / (sin_gamma * gamma_term) * a * b * c;
        dVdBeta = 0.5 * sin_gamma * dbeta / gamma_term * a * b * c;
        dVdGamma = (cos_gamma * gamma_term + 0.5 * sin_gamma * (dgamma1 + dgamma2) / gamma_term) * a * b * c;
        break;
    }

    // a is the first row of A^(-1).
    Ai[0][0] = a;
    Ai[0][1] = 0.0;
    Ai[0][2] = 0.0;
    // b is the second row of A^(-1).
    Ai[1][0] = b * cos_gamma;
    Ai[1][1] = b * sin_gamma;
    Ai[1][2] = 0.0;
    // c is the third row of A^(-1).
    Ai[2][0] = c * cos_beta;
    Ai[2][1] = c * beta_term;
    Ai[2][2] = c * gamma_term;

    Ai00 = Ai[0][0];
    Ai01 = Ai[0][1];
    Ai02 = Ai[0][2];
    Ai10 = Ai[1][0];
    Ai11 = Ai[1][1];
    Ai12 = Ai[1][2];
    Ai20 = Ai[2][0];
    Ai21 = Ai[2][1];
    Ai22 = Ai[2][2];

    // Invert A^-1 to get A
    RealMatrix m = new Array2DRowRealMatrix(Ai, true);
    m = new LUDecomposition(m).getSolver().getInverse();
    A = m.getData();

    // The columns of A are the reciprocal basis vectors
    A00 = A[0][0];
    A10 = A[1][0];
    A20 = A[2][0];
    A01 = A[0][1];
    A11 = A[1][1];
    A21 = A[2][1];
    A02 = A[0][2];
    A12 = A[1][2];
    A22 = A[2][2];

    // Reciprocal basis vector lengths
    aStar = 1.0 / sqrt(A00 * A00 + A10 * A10 + A20 * A20);
    bStar = 1.0 / sqrt(A01 * A01 + A11 * A11 + A21 * A21);
    cStar = 1.0 / sqrt(A02 * A02 + A12 * A12 + A22 * A22);
    if (logger.isLoggable(Level.FINEST)) {
        logger.finest(String.format(" Reciprocal Lattice Lengths: (%8.3f, %8.3f, %8.3f)", aStar, bStar, cStar));
    }

    // Interfacial diameters from the dot product of the real and reciprocal vectors
    interfacialRadiusA = (Ai00 * A00 + Ai01 * A10 + Ai02 * A20) * aStar;
    interfacialRadiusB = (Ai10 * A01 + Ai11 * A11 + Ai12 * A21) * bStar;
    interfacialRadiusC = (Ai20 * A02 + Ai21 * A12 + Ai22 * A22) * cStar;

    // Divide by 2 to get radii.
    interfacialRadiusA /= 2.0;
    interfacialRadiusB /= 2.0;
    interfacialRadiusC /= 2.0;

    if (logger.isLoggable(Level.FINEST)) {
        logger.finest(String.format(" Interfacial radii: (%8.3f, %8.3f, %8.3f)", interfacialRadiusA,
                interfacialRadiusB, interfacialRadiusC));
    }

    G[0][0] = a * a;
    G[0][1] = a * b * cos_gamma;
    G[0][2] = a * c * cos_beta;
    G[1][0] = G[0][1];
    G[1][1] = b * b;
    G[1][2] = b * c * cos_alpha;
    G[2][0] = G[0][2];
    G[2][1] = G[1][2];
    G[2][2] = c * c;

    // invert G to yield Gstar
    m = new Array2DRowRealMatrix(G, true);
    m = new LUDecomposition(m).getSolver().getInverse();
    Gstar = m.getData();

    List<SymOp> symOps = spaceGroup.symOps;
    int nSymm = symOps.size();
    if (symOpsCartesian == null) {
        symOpsCartesian = new ArrayList<>(nSymm);
    } else {
        symOpsCartesian.clear();
    }

    RealMatrix toFrac = new Array2DRowRealMatrix(A);
    RealMatrix toCart = new Array2DRowRealMatrix(Ai);
    for (int i = 0; i < nSymm; i++) {
        SymOp symOp = symOps.get(i);
        m = new Array2DRowRealMatrix(symOp.rot);
        // rot_c = A^(-1).rot_f.A
        RealMatrix rotMat = m.preMultiply(toCart.transpose()).multiply(toFrac.transpose());
        // tr_c = tr_f.A^(-1)
        double tr[] = toCart.preMultiply(symOp.tr);
        symOpsCartesian.add(new SymOp(rotMat.getData(), tr));
    }

}